我尝试在回答问题后重定向到问题详细视图,但我得到了
NoReverseMatch 在 /98afdfc7-df41-416c-aaae-c1014bfbf119/answer
未找到带有参数“('87',)'的'question_detail'的反向。尝试了 1 种模式:['questions/(?P[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0- 9a-f]{4}-[0-9a-f]{12})$']
输入我的答案后
楷模
class Question(models.Model):
id = models.UUIDField(_("ID"), primary_key=True,
default=uuid.uuid4, editable=False)
question = models.CharField(_("Question"), max_length=300)
def get_absolute_url(self):
return reverse('question_detail', args=[str(self.id)])
class Answer(models.Model):
question = models.ForeignKey(Question, verbose_name=_(
"Answer"), on_delete=models.CASCADE, related_name='answers')
answer = models.CharField(max_length=255)
def get_absolute_url(self):
return reverse('question_detail', args=[str(self.id)])
网址
urlpatterns = [
path('<uuid:pk>/answer', AnswerQuestionView.as_view(), name='answer'),
path('questions/<uuid:pk>', QuestionDetailView.as_view(),
name='question_detail'),
]
意见
class AnswerQuestionView(CreateView):
model = Answer
context_object_name = 'answer'
fields = ['answer', 'question']
template_name = "forms/answer.html"
class QuestionDetailView(DetailView):
model = Question
context_object_name = 'question'
template_name = "question_detail.html"
HTML 表单
<form method="post">
{% csrf_token %}
{{form.as_p}}
<button value="submit">Post</button>
</form>