【发布时间】:2026-01-28 19:30:01
【问题描述】:
我正在构建一个简单的问答网站,例如 Stack Overflow,并且正在构建将答案标记为已接受,但是当我实施它时,它会将每个答案都标记为已接受。我的意思是用户可以接受任何答案,但我不想要这个。我正在尝试制作 - 用户只能标记一个已接受的答案。如果用户将一个答案标记为已接受并尝试将第二个答案标记为已接受,则第一个将被删除,第二个将被标记
models.py
class Answer(models.Model):
answer_user = models.ForeignKey(User,on_delete=models.CASCADE)
body = models.CharField(max_length=30,null=True)
accepted = models.BooleanField(default=False)
views.py
def mark_accepted(request, question_id):
post = get_object_or_404(Answer, pk=question_id)
if request.GET.get('submit') == 'accept':
if post.accepted == True:
post.accepted = False
else:
post.accepted = True
return JsonResponse({'action':'accept'})
【问题讨论】:
-
@DecapitatedSoul 接受端点似乎只知道哪个问题,而不是哪个答案,因此尽管考虑到 OP 的要求,这没有意义,但它可能 is 每个答案都被接受.
-
我不确定我的评论去了哪里,但问题似乎是你已经确定了答案是否被接受为 answer 的属性,所以每个人都可以单独接受或不接受,而如果要求是“一个问题可以有零个或恰好一个接受的答案”,那么使得哪个答案已被接受,则 question 的属性将适合好多了。
标签: python html django ajax django-views