如何从类视图中的按钮单击更新 django 模型值

时间:2020-12-19 11:45:10

标签: python django

我目前有一个看起来像这样的模型:

模型

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 版

0 个答案:

没有答案