Поля формы для ModelForm с унаследованными моделями
У меня есть абстрактная модель, которая определяет некоторые поля и другие модели, унаследованные от нее. И если я определяю форму для этой модели, базовые поля не определены и я не могу использовать ее в форме.
Если я укажу его с полями, я получу эту ошибку:
Значение исключения: неизвестные поля (created_at, updated_at), указанные для реселлера
Исключение Место: C:\Python27\lib\site-packages\django\forms\models.py в новом, строка 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
Ответы
Ответ 1
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 будет вызвать поле для редактирования = False и blank = True.
Ответ 2
Если ваш отступ соответствует выдержке выше, вам может понадобиться правильно установить, что подкласс Meta
внутри BaseModel
. В противном случае django попытается сделать наследование нескольких таблиц - но это должно работать с тем, что вы пытаетесь сделать (если у вас нет стандартная настройка, например, django-nonrel).
Какой код запускает это исключение, просто импортируя модуль?