django中的表单验证失败

时间:2014-04-16 13:46:44

标签: python django

我有一个简单的表格

forms.py

class CraveDataForm(forms.ModelForm):
    class Meta:
        model = crave_data
        exclude=['date']

class CraveReplyForm(forms.ModelForm):
    class Meta:
        model = comments
        exclude=['date', 'crave']

model.py

class crave_data(models.Model):
    #person = models.ForeignKey(User)
    post=models.TextField(blank = True,null = True)
    date= models.DateTimeField()
    def __unicode__(self):
        return self.post

class comments(models.Model):

    crave=models.OneToOneField(crave_data)
    reply=models.CharField(max_length=1000, blank = True,null = True)
    date= models.DateTimeField()
    def __unicode__(self):
        return self.reply

和views.py

def crave_view(request):
    if (request.method=="POST"):
        form1=CraveDataForm(request.POST, request.FILES)
        if form1.is_valid():
            crave_made = form1.save(commit=False)
            crave_made.person = request.user
            crave_made.save()  
            messages.success(request, 'You Registered Successfully')
        else:
            messages.error(request, 'Please enter all required fields')
    else:                    
        form1=CraveDataForm()
    return render(request, "crave/crave.html", { 'form1' : form1 })

def comment_view(request):
    if (request.method=="POST"):
        form2 = CraveReplyForm(request.POST, request.FILES)
        if form2.is_valid():
            reply = form2.save(commit=False)
            reply.person=request.user
            #reply.crave = request.user
            reply.save()
        else:
            messages.error(request, 'Please enter all required fields')

    else:                    
        form2 = CraveReplyForm()



    return render(request, "crave/comment.html", { 'form2' : form2 })

我的模板fie crave.html

<form class="horizontal-form" role="form" action="/crave/" method="post"  style="padding: 10px;">
           {% csrf_token %}
                <div class="form-group" >


                        <div class="col-sm-10">
                        {{ form1.post.label_tag }}{{ form1.post }} <br /><br>   
                        </div>
                        </div>      
                        <input type="submit" class="btn btn-success" value="crave" />
                    </form>

                    <form action="/crave/reply_get/">
                    <input type="submit">
        </form>

我的comment.html

<form class="horizontal-form" role="form" action="/crave/reply_get/" method="post"  style="padding: 10px;">
           {% csrf_token %}
                <div class="form-group" >
                        <div class="col-sm-10">
                        {{ form2.reply.label_tag }} {{ form2.reply }}   </br> </br>
                    </div>
                    </div>
                    <input type="submit" class="btn btn-success" value="reply" />
        </form>

当我点击“渴望”按钮时,我只想保存表格1的数据,而不保存第二种形式的数据。所以评论仅针对相关帖子。使用外键。但我在“reply.crave = crave_made”中收到错误,我想访问create_view视图中的渴望。 帮助我。

1 个答案:

答案 0 :(得分:0)

您的表单来自UserCreationForm,因此该表单的字段也应该存在以使其有效。

但我认为你想继承ModelForm而不是UserCreationForm

所以将代码更改为

class CraveDataForm(forms.ModelForm):
    class Meta:
        model = crave_data
        exclude=['date']

class CraveReplyForm(forms.ModelForm):
    class Meta:
        model = comments
        exclude=['date', 'crave']