【问题标题】:Django: How to define a dynamic initial value on a ForeignKey Model FieldDjango:如何在 ForeignKey 模型字段上定义动态初始值
【发布时间】:2010-08-29 13:41:11
【问题描述】:

如何在外键字段上定义动态初始值?

附上代码:

from django.db import models
from django.conf import settings
from django.contrib.sites.models import Site

class Example(models.Model):
    site = models.ForeignKey(Site, initial=settings.SITE_ID)

我有以下错误:

site = models.ForeignKey(Site, initial=settings.SITE_ID)
Field.__init__(self, **kwargs)
TypeError: __init__() got an unexpected keyword argument 'initial'

我也尝试过:

class Example(models.Model):
    site = models.ForeignKey(Site, initial=Site.objects.get(id=settings.SITE_ID))

提前致谢

【问题讨论】:

    标签: django django-models django-forms


    【解决方案1】:

    模型字段不采用“初始”参数,它们采用“默认”。

    【讨论】:

    • 对!环顾四周,我从 Model.default 开始,以 Field.initial 结束,然后我把它们混在一起了。我的问题实际上在其他地方,但无论如何感谢您帮助我找到了解决方案。似乎无法在新模型中定义动态默认值然后执行同步数据库。所以我不得不删除默认参数,做同步数据库,然后在模型中添加默认值。
    【解决方案2】:

    覆盖模型的save()方法,检查字段值是否为None

    【讨论】:

    • 谢谢。它可以完成这项工作,但我想在表单中显示一个默认值。
    【解决方案3】:

    如果我对 dynamic 部分的理解正确,这与 Django foreign key FAQ 和 James Bennett 的 Django tips: auto-populated fields 有关(请参阅 圣杯 子标题:- )。

    【讨论】:

    • 谢谢,但我不希望它自动填充,我希望用户能够选择默认值以外的其他值。
    猜你喜欢
    • 2012-09-21
    • 2012-07-03
    • 2012-01-06
    • 2019-03-20
    • 2017-12-15
    • 2018-08-21
    • 2013-07-23
    • 1970-01-01
    • 2020-10-31
    相关资源
    最近更新 更多