Django를 배우기 위해 작은 프로젝트를 만들고 있는데, ModelForm 안에서 숨겨진 필드를 사용하려고 할 때 문제가 있습니다. Django의 HiddenInput이있는 ModelForm이 잘못되었습니다.
클래스 Theres는 :class Post(models.Model):
title = models.CharField(max_length = 140)
message = models.CharField(max_length = 10000)
pub_date = models.DateTimeField()
그리고 내 ModelForm :
:이 양식에 대해 생성 된 HTML이다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))
: 이것은이다
class PostForm(ModelForm):
class Meta:
model = Post
fields = ('title', 'message', 'pub_date',)
widgets = {
'message' : Textarea(attrs={'cols':80, 'rows':20}),
'pub_date' : HiddenInput(),
}
<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가 다른보기에서 설정되고 편집 할 때 pub_date를 내 템플릿에서 변경할 수 없습니다 (따라서 숨겨진 필드). 이 예제에서 form.is_valid()
은 항상 False를 반환합니다. 내 양식에서 'pub_date' : HiddenInput(),
행을 제거하면 True를 반환합니다. 내가 뭘 잘못하고 있니?
생성 된 페이지의 HTML 무엇 SplitHiddenDateTimeWidget로 변경하는 것입니다? – Robert
작전, 질문에 그것을 잊어 버렸습니다. 끝난. –
'form.errors'를 인쇄하면 어떻게됩니까? – Robert