【发布时间】:2016-08-17 00:01:09
【问题描述】:
我有一个创建表单,其中我将字段 ['created_at'] 作为隐藏的日期时间字段提交。我正在从 django.utils 导入时区导入,并将其用于另一个模型。有没有人知道为什么这个值是空白的?感谢您的帮助!
表格:
class CreateForm(ModelForm):
class Meta:
model = Animal
fields = ('name', 'course', 'core', 'animal_group', 'image_on', 'image_off', 'created_at',)
labels = { "image_on": "Animal Image", "image_off": "Incompleted Animal Image", }
widgets = {
'name': forms.Textarea(attrs={'cols': 80, 'rows': 1}),
}
def __init__(self, *args, **kwargs):
super(CreateForm, self).__init__(*args, **kwargs)
self.fields['created_at'] = forms.DateTimeField(initial = timezone.now())
self.fields['created_at'].widget = forms.HiddenInput()
def clean(self):
cleaned_data = self.cleaned_data
return cleaned_data
但是,当模板呈现隐藏的输入时,隐藏的输入就在那里,但它没有值。
这里是模板代码sn-p:
<form action="/support/add_animal/" enctype="multipart/form-data" method="POST">
{% csrf_token %}
{{ create_form | crispy }}
<br>
<input type="submit" class="btn btn-success" value="Save">
</form>
【问题讨论】:
-
很可能不相关 - 但这不是推荐的清洁方式。改为这样做
cleaned_data = super(CreateBadgeForm, self).clean()。这里有一段关于它的...docs.djangoproject.com/en/dev/ref/forms/validation/… -
@luke_aus 感谢您的提示!
-
问题解决了吗?
-
@luke_aus 可惜它没有:/ 我没有在表单字段中设置初始值,而是将模型属性更新为 default=timezone.now()。
-
太容易了!你应该发布你的答案而不是自己接受。
标签: python django-forms timezone hidden-field