Django 3.1中如何通过按钮点击在类视图内更新模型字段值
核心问题
在Django 3.1 环境下,如何在类视图体系内,通过模板按钮点击触发模型字段值更新。
已定义的Answer模型
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完成了所有Answer实例的列表展示功能,准备在模板中添加按钮,点击后将对应Answer实例的is_best_answer字段值更新为True,目前这套功能已经通过函数视图跑通,具体配置如下:
模板触发按钮代码
<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'),
当前待优化的方向
上述函数视图方案已经可以正常运行,但完全没有用到类视图的相关能力,希望找到更适配类视图体系的实现方式,适配我使用的Django 3.1版本。
内容的提问来源于stack exchange,提问作者spotnag
相关产品推荐
相关产品推荐

