我的问题是,在input_formats
的{{1}}上设置AbonnentForm(ModelForm)
时,模型的forms.py
不会显示在HTML表单中。
我只想改变显示一个DateField的方式。
我做错了什么?
这是我的models.py(缩短) 来自django.db导入模型
help_text
这是我的forms.py(完整)
def get_letzte_ausgabe_default():
return date(date.today().year, 12, 1) if date.today() > date(2017, 12, 26) else date(date.today().year + 1, 12, 1)
class Abonnent(models.Model):
erste_ausgabe = models.DateField(default=get_letzte_ausgabe_default(),
verbose_name="Erste Ausgabe",
help_text="Eingabe im Format MM/JJJJ. Zum Beispiel: 01/2018)
这是我的模板(缩短版)
from django.forms import ModelForm, DateField, DateInput
from .models import Abonnent
class AbonnentForm(ModelForm):
# WHEN I ADD THE FOLLOWING LINE, THE HELP_TEXT IS NOT DISPLAYED UNDER THE HTML-FORM
erste_ausgabe = DateField(input_formats=['%m %Y'],
widget=DateInput(format='%m %Y'))
class Meta:
model = Abonnent
fields = '__all__'
答案 0 :(得分:2)
这是因为你是"覆盖" erste_ausgabe
内的ModelForm
字段,因此help_text
不显示。
根据docs,您可以在help_text
课程中重新指定ModelForm
。
class AbonnentForm(ModelForm):
erste_ausgabe = DateField(input_formats=['%m %Y'],
widget=DateInput(format='%m %Y'),
help_text="Eingabe im Format MM/JJJJ. Zum Beispiel: 01/2018")
答案 1 :(得分:1)
您可以尝试更改input_formats
方法中的widget
和__init__
。
class AbonnentForm(ModelForm):
# ...
def __init__(self, *args, **kwargs):
super(AbonnentForm, self).__init__(*args, **kwargs)
self.fields['erste_ausgabe'].input_formats=['%m %Y']
self.fields['erste_ausgabe'].widget=DateInput(format='%m %Y')
这样可以避免像在Nik的回答中那样复制模型表单中的help_text
。