首页 > 解决方案 > 多对多字段上的 Django 唯一

问题描述

我正在尝试在用户之间创建一个私人消息系统。我创建了两个模型。一个是包含消息的“消息”,另一个是包含两个用户之间的消息的“对话”。我想阻止创建重复的对话。例如,我在 user1 和 user2 之间创建了一个对话,这个对话的 ID 是“5”,然后我在 user1 和 user2 之间再次创建了另一个对话,它的 ID 是“6”。这对我很不利。同一用户之间必须只有一次对话。

当我尝试“ unique=True ”时,我收到一个错误,因为“ api.Conversation.participants: (fields.E330) ManyToManyFields cannot be unique。

模型.py

class Conversation(models.Model):
    participants = models.ManyToManyField(User, unique=True)



class Message(models.Model):
     sender = models.ForeignKey(User, related_name="sender", on_delete=models.CASCADE, related_query_name='s')
     reciepent = models.ManyToManyField(User)
     conversation = models.ForeignKey(Conversation, blank=False, null=False, on_delete=models.CASCADE)
     msg_content = models.TextField(max_length=500, blank=True)
     sendtime = models.DateTimeField(auto_now_add=True)
     ordering = ["-sendtime"]

标签: pythondjangodjango-rest-framework

解决方案


推荐阅读