gpt4 book ai didi

python - 带有 HiddenInput 的 Django 的 ModelForm 返回无效

转载 作者:行者123 更新时间:2023-11-28 16:53:15 26 4
gpt4 key购买 nike

我正在制作一个学习 Django 的小项目,但我在尝试使用 ModelForm 中的隐藏字段时遇到了一些问题。

有类:

class Post(models.Model):
title = models.CharField(max_length = 140)
message = models.CharField(max_length = 10000)
pub_date = models.DateTimeField()

还有我的模型:

class PostForm(ModelForm):
class Meta:
model = Post
fields = ('title', 'message', 'pub_date',)
widgets = {
'message' : Textarea(attrs={'cols':80, 'rows':20}),
'pub_date' : HiddenInput(),
}

这是 View :

def edit(request, post_id):
if request.method == 'POST':
form = PostForm(request.POST, request.FILES)
if form.is_valid():
print 'VALID'
dados = form.cleaned_data
post = Post.objects.get(pk=post_id)
post.title = dados['title']
post.message = dados['message']
post.save()
return HttpResponseRedirect(reverse('blog.views.detail', args=(post.id,)))
else:
print 'INVALID'
form = PostForm(instance=Post.objects.get(pk=post_id))
return render_to_response('blog/add_post.html', {'form' : form,}, context_instance = RequestContext(request))

这是为表单生成的 HTML:

<div style='display:none'>
<input type='hidden' name='csrfmiddlewaretoken'
value='3b7c0735bf464fb4fd7dcd3011050e1c' />

</div>
<tr>
<th><label for="id_title">title:</label></th>
<td><input id="id_title" type="text" name="title" value="asd1111111111" maxlength="140" /></td>
</tr>
<tr>
<th><label for="id_message">message:</label></th>
<td><textarea id="id_message" rows="20" cols="80" name="message">asd11111111111</textarea>
<input type="hidden" name="pub_date" value="2010-12-19 17:08:22.498000" id="id_pub_date" /></td>
</tr>

我使用相同的模板来创建和编辑帖子。当我创建时,pub_date 在另一个 View 中设置,当我编辑时,我无法更改模板上的 pub_date(因此是隐藏字段)。在这个例子中,form.is_valid() 总是返回 False。如果我从表单中删除 'pub_date' : HiddenInput(), 行,它会返回 True。我做错了什么?

最佳答案

您希望发布日期为发布日期吗?您是否在模型中尝试过 auto_now?

pub_date    = models.DateTimeField(auto_now=True)

关于python - 带有 HiddenInput 的 Django 的 ModelForm 返回无效,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4485126/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com