首页 > 解决方案 > 如何通过在基于类的视图中单击按钮来更新 django moodel 值

问题描述

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

模型

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}"

我有一个基于类的列表视图,其中列出了上述所有答案。我想在模板中添加一个按钮,将 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'),

以上对我有用,但我不得不调用一个函数,而不是与基于类的视图有关。有没有更好的办法?

丹戈 3.1 版

标签: pythondjangotemplatesmodel

解决方案


推荐阅读