如何在模型表单中使用父模型字段?

时间:2017-05-01 17:33:34

标签: python django forms

我使用django 1.9并拥有一些模型的继承,例如:

class TimeStampedModel(models.Model):
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)

    class Meta:
        abstract = True

之后我使用此模型将createdmodified添加到我的模型中。但是我不能将这些字段用于表单中。 E.g:

class Customer(TimeStampedModel):
    first_name = models.CharField(max_length=250, blank=True,
                                  null=True, default=None)
    last_name = models.CharField(max_length=250, blank=True,
                                 null=True, default=None)

表格代码:

class CustomerForm(forms.ModelForm):
    class Meta:
         model = Customer
         fields = ('first_name', 'last_name', 'modified')
         readonly_fields = ('modified', )

我收到错误:

django.core.exceptions.FieldError: Unknown field(s) (modified) specified for ...

如何将此字段添加到表单中?我在DB模式中有它,但django形式没有得到它。

2 个答案:

答案 0 :(得分:1)

致电auto_now=True时,

Model.save()字段会自动更新。 了解更多详情https://docs.djangoproject.com/en/1.11/ref/models/fields/#datefield auto_now =无法从ModelForm访问真实字段, 如当前实现的那样,将auto_now或auto_now_add设置为True将导致该字段具有editable = False和blank = True设置。

答案 1 :(得分:1)

因为你使用1.9而发生的问题,这是从1.10

改变的

所以你可以更新你的django版本,以便你可以使用这个