具有继承模型的ModelForm的表单字段

时间:2011-03-31 11:46:37

标签: django django-models django-forms

我有一个抽象模型,它定义了一些字段,以及从中继承的其他模型。如果我为这个模型定义一个表单,基本字段没有定义,我不能在表单中使用它。

如果我用字段指定它,我会收到此错误:

异常值:为转销商指定的未知字段(created_at,updated_at)

异常位置:C:\ Python27 \ lib \ site-packages \ django \ forms \ models.py new ,第215行

这是我的代码:

class BaseModel(models.Model):
    created_at = models.DateTimeField(default=datetime.now, editable=False)
    updated_at = models.DateTimeField(auto_now=True)
    class Meta:
        abstract = True

class Reseller(BaseModel): name = models.CharField(_("name"), max_length=255, unique=True)

class ResellerForm(forms.ModelForm): class Meta: model = Reseller fields = ('name','created_at','updated_at')

UPD

使用这三个类可以清楚地重现这个新的空项目。它在表单导入失败

 from jjj.forms import ResellerForm
Traceback (most recent call last):
  File "", line 1, in 
  File "C:\Users\ShapeR\PycharmProjects\djt\jjj\forms.py", line 4, in 
    class ResellerForm(forms.ModelForm):
  File "C:\Python27\lib\site-packages\django\forms\models.py", line 214, in __new__
    raise FieldError(message)
FieldError: Unknown field(s) (created_at, updated_at) specified for Reseller

2 个答案:

答案 0 :(得分:15)

created_at = models.DateTimeField(default=datetime.now, editable=False)
updated_at = models.DateTimeField(auto_now=True)

http://docs.djangoproject.com/en/dev/ref/models/fields/#editable

  

Field.editable

     

如果为False,则该字段不会   可在管理员或表格中编辑   从模型自动生成   类。默认为True。

  

请注意

     

目前已实施,设定   auto_now或auto_now_add为True将   导致该字段具有editable = False   和空白=真实设置。

答案 1 :(得分:0)

如果您的缩进与上面的摘录相符,那么您可能需要在MetaBaseModel {{1}}子类。否则,django将尝试properly nest - 但这应该仍然适用于您尝试做的事情(除非您有非标准设置,例如django-nonrel)。

什么代码触发此异常,只导入模块?