Поля формы для 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).

Какой код запускает это исключение, просто импортируя модуль?