Django Inlines и DateTimeField
Я пытаюсь создать простое приложение Event, поэтому я решил создать событие и некоторые встроенные события:
class EventOccurenceInline(admin.TabularInline):
model = models.EventOccurance
form = forms.EventOccuranceForm
pass
class EventAdmin(TranslatableAdmin):
list_display = [ "internal_name"]
inlines = [
EventOccurenceInline,
]
pass
а вот Forms.py:
class EventOccurenceForm(TranslatableModelForm):
start_date = forms.DateTimeField()
end_date = forms.DateTimeField()
class Meta:
model = models.EventOccurence
Но когда я открываю свой бэкэнд, я вижу только простые входные данные вместо указателей DateTime, и даже метки для этих полей ничего не говорят:
Кто-нибудь знает, как использовать эти виджеты внутри строк? Что я делаю неправильно?
заранее спасибо, Майкл
1 ответ
Похоже, проблема в том, что вы объявляете start_date
а также end_date
поля в EventOccurenceForm
класс без каких-либо аргументов.
Вот цитата из документации Django "Создание форм из моделей" в разделе " Переопределение типов полей по умолчанию или виджетов ":
Если вы явно создаете экземпляр поля формы, подобного этому, Django предполагает, что вы хотите полностью определить его поведение; следовательно, атрибуты по умолчанию (такие как
max_length
или жеrequired
) не взяты из соответствующей модели. Если вы хотите сохранить поведение, указанное в модели, вы должны явно установить соответствующие аргументы при объявлении поля формы.
Почему вы объявляете start_date
а также end_date
поля в EventOccurenceForm
класс вообще? Это потому, что вы пытаетесь иметь только эти два поля в форме? Если это так, вы должны использовать fields
атрибут внутреннего Meta
класс вместо.
Я предполагаю EventOccurence
модели start_date
а также end_date
поля DateField
и, таким образом, внутри администратора Django они будут иметь AdminDateWidget
виджет по умолчанию. Если по какой-то причине это не так и вы не можете изменить модель, вы всегда можете использовать widgets
атрибут EventOccurenceForm
класс внутри Meta
класс, как это:
from django.contrib.admin.widgets import AdminDateWidget
class EventOccurenceForm(TranslatableModelForm):
class Meta:
model = models.EventOccurence
widgets = {
'start_date': AdminDateWidget,
'end_date': AdminDateWidget,
}