Django input_formats删除help_text?我只想改变一个DateField的显示方式

时间:2017-03-20 11:29:24

标签: django django-models django-forms

我的问题

我的问题是,在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__'

2 个答案:

答案 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