python-3.x - 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)
但是我需要创建某种限制,以便在保存模型之前用户不会出现在两个字段中。
有人可以帮助我如何实施它吗?
解决方案
可以通过首先检查用户是否已存在于“喜欢”部分中来解决,反之亦然。
在喜欢或不喜欢用户之前是否做过该操作之前,请继续检查。
使用这个片段应该可以工作。
在不喜欢之前检查一下,如果他存在于类似的部分。
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
还要确保您不允许单个用户多次喜欢。
推荐阅读
- javascript - 功能组件中的 setState 不保留值
- elasticsearch - 升级弹性客户端和依赖项以连接到较旧的弹性服务器实例
- docker - 在使用 Kubernetes 部署的浏览器上看不到我的应用
- python-3.x - 需要一个类似字节的对象,而不是“str”(不发送到 dataOutput)
- azure-files - 从 Windows 10 PC 连接到 Azure 文件共享时出错
- python - 更新到 3.5.0 棉花糖后的“未知字段”
- python-3.x - Python Cryptography 从密码错误生成密钥
- c# - 逗号分隔的字符串以分隔数组c#中的值
- excel - SSIS:如何替换星号,数据类型DT_R8,excel源码
- ios - PKCanvasView 如何在 iOS 13 [objC] 中获取位置和压力?