代码之家  ›  专栏  ›  技术社区  ›  LeLouch

在django中使用自定义表单显示和更新日期字段

  •  1
  • LeLouch  · 技术社区  · 7 年前

    我试图使用自定义表单显示和更新日期字段,我使用的是DATE\u INPUT\u格式

    设置。py公司

    DATE_INPUT_FORMATS = ['%d %m %Y']
    

    表格。py公司

    class UserForm(forms.ModelForm):
        birth_day = forms.DateField(input_formats=settings.DATE_INPUT_FORMATS)
        class Meta:
            model = User
            fields = ('first_name', 'last_name','birth_day')
    

    我的自定义输入:

    <input type="text" name="birth_day" value="{{ user.birth_day }}" size="10" class="form-control date-picker" id="id_birth_day" data-datepicker-color="">
    

    默认表单输入

    <input type="text" name="birth_day" value="" required="" id="id_birth_day" class="form-control">
    

    我的问题每次尝试更新时都会出现,我必须重新输入DATE字段,因为我的DATE\u INPUT\u格式是这样的

    2017年2月6日

    但django就是这样展示的

    2017年2月6日

    所以h

    所以每次我更新表格

    输入有效日期。 错误

    那么,如果可能的话,在不改变显示和输入格式的情况下,解决此问题的最佳方法是什么

    1 回复  |  直到 7 年前
        1
  •  2
  •   Bikiran Das    6 年前

    我有一个类似的设置为您的要求,这是我的工作很好

    HTML---编辑。html

    <p>You can edit your account using the following form:</p>
            <form action="." method="post" enctype="multipart/form-data" id="controlForm">
            {{ user_form.as_p }}
            {{ profile_form.as_p }}
            {% csrf_token %}
    <p><input type="submit" value="Save changes"></p>

    型号。py----->

    class Profile(models.Model):
        user = models.OneToOneField(settings.AUTH_USER_MODEL, on_delete=models.CASCADE)
        date_of_birth = models.DateField(blank=False, null=True)
        img = models.ImageField(upload_to=upload_to, blank=True, db_index=True)
        slug = models.SlugField(max_length=200, blank=True)
    

    表格。py公司

    class ProfileEditForm(forms.ModelForm):
        class Meta:
            model = Profile
            fields = ('date_of_birth', 'img')
    

    上述代码以YYYY-MM-DD格式保存日期 要更改默认格式,可以在“设置”中添加日期格式。py公司

    具有 DATE_INPUT_FORMT = ['YYYY-MM-DD'] 或任何你想要的格式