You need to enable JavaScript to run this app. Django 3.1中如何通过按钮点击在类视图内更新模型字段值
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.11.12 19:45:01