回答此问题可获得 20 贡献值,回答如果被采纳可获得 50 分。
<p>我想问一问;一个用于实践的网站,我希望每个答案都与一个作者和一个问题相关联,我设法将其与用户关联,但我无法找出问题的部分</p>
<p>代码如下:</p>
<p>models.py:</p>
<pre><code>class Questiont(models.Model):
question = models.CharField(max_length=200)
description = models.TextField(null = True , blank=True)
date_posted =models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User,on_delete=models.CASCADE)
def __str__(self):
return self.question
class Answer(models.Model):
content = models.TextField(null=True,blank=True)
question = models.ForeignKey(Question, on_delete=models.CASCADE)
author = models.ForeignKey(User,on_delete=models.CASCADE)
date_posted = models.DateTimeField(default=timezone.now)
</code></pre>
<p>views.py(关联发生的位置):</p>
<pre><code>class CreateAnswer(LoginRequiredMixin,CreateView):
model = Answer
fields = ['content']
context_object_name = 'answer'
success_url = reverse_lazy('Lisk home')
def form_valid(self, form):
form.instance.question = ?????????
form.instance.author = self.request.user
return super().form_valid(form)
</code></pre>
<p>如何指定答案指定的问题(<code>form.instance.question</code>)?假定正在回答的问题的ID位于回答页面(模板)的URL中</p>
<p>url如下所示:</p>
<pre><code>http://127.0.0.1:8000/question/22/createanswer/
</code></pre>
<p>url.py(不是根):</p>
<pre><code>politicspost=questioon (sorry if this is messy)
path('politics_topic/', views.Politics_topic.as_view(template_name='lisk_templates/politics_topic_template.html'),
name='Politics_topic'),
path('ask_politics/', views.Questionpolitics.as_view(template_name='lisk_templates/ask_politics_template.html'),
name='ask_politics'),
path('politicspost/<int:pk>/',views.Politics_post_details.as_view(template_name='lisk_templates/politics_post_details.html'),
name='politics_post_details'),
path('politicspost/<int:pk>/update/',views.Updatepolitics.as_view(template_name='lisk_templates/ask_politics_template.html'),
name='updatepoliticspost'),
path('politicspost/<int:pk>/delete/',views.Deletepoliticspost.as_view(template_name='lisk_templates/delete_politics_confirmation.html'),name ='deletepoliticspost'),
#ANSWER
path('politicspost/<int:id>/createanswer/',views.CreateAnswer.as_view(template_name='lisk_templates/createanswer.html'),name = 'createanswer'),
path('answers/',views.Answerslist.as_view(template_name='lisk_templates/politics_post_details.html'),name ='answers')
</code></pre>
<p>提前谢谢</p>