我目前有一个看起来像这样的模型:
模型
class Answer(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE, related_name='answers')
author = models.ForeignKey(User, on_delete=models.CASCADE)
content = models.TextField()
date_posted = models.DateTimeField(default=timezone.now)
is_best_answer = models.BooleanField(default=False)
def set_best_answer(self):
self.is_best_answer = True
self.save()
def get_absolute_url(self):
return reverse('question-detail', kwargs={'pk': self.question.pk})
def __str__(self):
return f"Answer by {self.author} with text: {self.content}"
我有一个基于类的 Listview
,其中列出了上述所有答案。我想在模板中添加一个按钮,将 is_best_answer
模型中的值更新为 True
例如
html
<a class="btn btn-outline-dark " href="{% url 'select' answer.id %}">Set Best Answer</a>
查看
def set_best_(request, pk):
answer = Answer.objects.filter(pk=pk).first()
answer.set_best_answer()
return redirect('/')
网址
path('answer/<int:pk>/best-answer/', set_best, name='select'),
以上对我有用,但我不得不调用一个函数,而不是与基于类的视图有关的任何事情。有没有更好的办法?
Dango 3.1 版