【问题标题】:Display different input for day month and year separately from datefield - django与日期字段分开显示日月和年的不同输入 - django
【发布时间】:2015-01-16 04:13:37
【问题描述】:

在模板中,我想将每个字段(日、月、年)与AboutForm 分开显示,而不仅仅是一个输入,如下所示:

models.py:

class About(models.Model):
    user = models.OneToOneField(User)
    dob = models.DateField(null=True, blank=True)
    present_address = models.CharField(max_length=150, null=True, blank=True)
    permanent_address = models.CharField(max_length=150, null=True, blank=True)
    description = models.TextField(null=True, blank=True)

forms.py:

class AboutForm(forms.ModelForm):
    class Meta:
        model = About
        exclude = ('user',)

【问题讨论】:

    标签: django django-models django-forms django-templates


    【解决方案1】:

    您可以使用 SelectDateWidget 小部件。

    from django.forms import extras
    
    ...
    
    class AboutForm(forms.ModelForm):
        class Meta:
            model = About
            exclude = ('user',)
            widgets = {
                'dob': extras.SelectDateWidget(years=range(1900, 2015))
            }
    

    感谢 likeon 指出这是 Django 内置的。

    【讨论】:

    • 我在哪里保存SelectDateWidget 类?在表格中?
    • 你可以在定义表单之前把它放在forms.py中,或者你可以把它放在一个单独的文件中(比如widgets.py)并在顶部导入:from widgets import SelectDateWidget跨度>
    • 好的!谢谢你。它的工作。但是如何将 none 或初始值 --- 更改为 Day MonthYear
    • 没关系,明白了!谢谢您的帮助!它现在运行良好。
    • 其实django在django.forms.extras中已经有了SelectDateWidget。
    猜你喜欢
    • 2012-05-11
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 2011-09-26
    • 1970-01-01
    • 2022-07-08
    相关资源
    最近更新 更多