【问题标题】:How do you display the current date of a field in a SelectDateWidget?如何在 SelectDateWidget 中显示字段的当前日期?
【发布时间】:2014-04-03 01:06:43
【问题描述】:

我的一个表单是编辑表单。我试图让用户编辑一些数据,包括他们现有的生日。但是,当他们进入编辑页面时,所有输入字段都已包含指示该字段当前值的文本。

但是,即使日期已经保存,selectdatewidget 也是完全空白的。用户总是必须将日期改回原来的生日并保存,这很麻烦。

有没有办法解决这个问题?

这是我的表单代码:

class ProfileForm(forms.ModelForm):
    today = int(date.today().year)
    BIRTH_YEAR_CHOICES = (
        [i for i in reversed(range(1900,today))]
    )
    birthday = forms.DateField(widget = extras.SelectDateWidget(years=BIRTH_YEAR_CHOICES), required=False)
    phone = forms.IntegerField(error_messages={'invalid': 'Numbers only please'}, required=False)
    class Meta:
        model = UserProfile
        fields = ('avatar','user','gender','phone','accomplishments','description',)
        exclude = ('user','birthday')

谢谢!

【问题讨论】:

  • 您希望我们如何根据此处给出的描述解决您的问题?请向我们展示您尝试过的代码!
  • 对不起,我认为这是一个更普遍的问题。我的错,我发布了代码。

标签: django django-forms django-templates


【解决方案1】:

您可以覆盖 ProfileForm 的__init__ 方法并为所有字段设置初始值:

def __init__(self,*args, **kwargs):
    super(self.ProfileForm, self).__init__(*args, **kwargs)
    self.fields['birthday'].initial = whatever_you_want

或者您可以在创建表单时及时传递初始值:

form = ProfileForm(initial={'birthday': 'your_date'})

【讨论】:

    猜你喜欢
    • 2019-07-11
    • 1970-01-01
    • 2018-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    • 2020-09-18
    相关资源
    最近更新 更多