使用django中的自定义表单显示和更新DateField

时间:2018-03-17 20:40:37

标签: django html5 django-models django-forms

我尝试使用自定义表单显示和更新DateField,我正在使用DATE_INPUT_FORMATS

settings.py

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

forms.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="">

默认表格inpute

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

我的问题每次都开始我试图更新我必须重新进入DateField,因为我的DATE_INPUT_FORMATS就像那样

  

06 02 2017

但是django会像那样显示它

  

2017年2月6日

所以h

所以每次我更新我的表格我都会

  

输入有效日期。错误

所以它是解决此问题的最佳方法,如果可能的话,不更改显示和输入格式

1 个答案:

答案 0 :(得分:1)

对于您的要求,我有类似的设置,对我来说很好

HTML --- Edit.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>

models.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)

Forms.py

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

上面的代码以YYYY-MM-DD格式保存日期 要更改默认格式,您可以在settings.py

中添加日期格式

根据需要使用DATE_INPUT_FORMT = ['YYYY-MM-DD']或任何格式