答案创建视图未在Django

时间:2019-02-23 03:56:59

标签: python django django-forms django-views

我正在研究Quora和StackOverflow克隆的混合体。我做了一个“ add_answer”视图,以便让我为问题添加答案,但是由于某些原因,它显示了完整性错误: Here's the error image
但是,当我通过管理面板添加时,它将在数据库中添加答案。怎么了? 代码如下:

  1. models.py:
    class Answer(models.Model):  
        content = models.TextField()  
        user = models.ForeignKey(User,on_delete=models.CASCADE)  
        question = models.ForeignKey(Question,on_delete=models.CASCADE,blank=False)  
        created = models.DateTimeField(auto_now_add=True)  
        upvotes = models.PositiveIntegerField(default=0)  
        is_active = models.BooleanField(default=True)  

        def __str__(self):  
            return '{}\'s Answer'.format(self.user.username)  

        class Meta:  
                ordering = ('-upvotes','-created')  
  1. forms.py:
    class AnswerForm(forms.ModelForm):
        content = forms.CharField(widget=forms.Textarea,help_text='Your Answer in Detail. Note: MarkDown is enabled.')

        class Meta:
            model = Answer
            fields = ['content']

        def __init__(self,author,question,*args,**kwargs):
            super().__init__(*args,**kwargs)
            self.user = author
            self.question = question
  1. “ add_answer”视图(views.py):
@login_required
def add_answer(request, pk):
    ques = get_object_or_404(Question, pk = pk)
    if request.method == 'POST':
        form = AnswerForm(request.user,ques,request.POST)
        if form.is_valid():
            cd = form.cleaned_data
            answer = form.save(commit=False)
            answer.content = cd['content']
            answer.save()
            messages.success(request,'Success! Your Answer has been added!')
            return redirect('forum')
        else:
            messages.error(request,form.errors)
    else:
        form = AnswerForm(request.user,ques)
    return render(request,'discussion/answer_create.html',{'form':form})  

  1. answer_create.html(模板):

{% extends 'base.html' %}
{% load markdownify %}
{% block title %} Add Answer {% endblock %}

{% block header %}    
    <h2 class="display-5" style="font-family: x-locale-heading-primary,zillaslab,Palatino,Palatino Linotype,x-locale-heading-secondary,serif;">
        Add Answer:
    </h2>  
{% endblock %}

{% block content %}
    {% if form.errors %}
    <h4 class="alert alert-primary alert-warning" role="alert">Errors:<br> {{form.errors}}  <hr></h4>
    {% endif %}
    <form action="" method="POST">
        {% csrf_token %}
        {{form.as_p}}
        <input type="submit">
    </form>
{% endblock %}

如果有人帮助我,我将非常感激。

1 个答案:

答案 0 :(得分:1)

您忘记分配问题实例来回答模型

  

answer.question =问题

ggplot(X, aes(sample = V2)) +stat_qq() + stat_qq_line()

您也可以以模型形式init进行以下操作

ques = get_object_or_404(Question, pk = pk)
if form.is_valid():
   cd = form.cleaned_data
   answer = form.save(commit=False)
   answer.question = ques
   answer.content = cd['content']
   answer.save()
相关问题