首页 > 解决方案 > Django ManyToManyField 将用户限制为单个字段

问题描述

我正在尝试使用下面的代码为与特定用户对应的 ManyToManyField 创建一个喜欢和不喜欢的评论部分的模型。

class Comment(models.Model):
    """docstring for comment."""
    ...
    likes = models.ManyToManyField("User", related_name = "CommentLikes", blank = True)
    dislikes = models.ManyToManyField("User", related_name = "CommentDislikes", blank = True)

但是我需要创建某种限制,以便在保存模型之前用户不会出现在两个字段中。

有人可以帮助我如何实施它吗?

标签: python-3.xdjangodjango-models

解决方案


可以通过首先检查用户是否已存在于“喜欢”部分中来解决,反之亦然。

在喜欢或不喜欢用户之前是否做过该操作之前,请继续检查。

使用这个片段应该可以工作。

在不喜欢之前检查一下,如果他存在于类似的部分。

if(len(Comment.objects.all().filter(likes=request.user))==0):
   // allow him to dislike

喜欢前检查

if(len(Comment.objects.all().filter(dislikes =request.user))==0):
       // allow him to like 



  

还要确保您不允许单个用户多次喜欢。


推荐阅读