Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django在ManyToManyField独一无二_Python_Django_Django Rest Framework - Fatal编程技术网

Python Django在ManyToManyField独一无二

Python Django在ManyToManyField独一无二,python,django,django-rest-framework,Python,Django,Django Rest Framework,我正在尝试在用户之间创建一个私有消息传递系统。我创建了两个模型。一个是包含消息的“消息”,另一个是包含两个用户之间消息的“对话”。我想避免重复对话。例如,我在user1和user2之间创建了一个对话,这个对话的ID是“5”,然后我又在user1和user2之间创建了另一个对话,它的ID是“6”。那对我不好。同一用户之间必须只有一次对话 当我尝试“unique=True”时,我得到的错误是“api.Conversation.participants:(fields.E330)许多字段不能是唯一的。

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

当我尝试“unique=True”时,我得到的错误是“api.Conversation.participants:(fields.E330)许多字段不能是唯一的。

型号.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"]

但是,您的
对话
不能像
ManyToManyField
建议的那样有多个
用户
s吗?如果是这样,那么唯一约束就没有多大意义。如果一个对话只能有两个用户,那么您的建模是不正确的,
ManyToManyField
应该从
User
到自身(
self
)是的,一个对话只能有两个用户,如User1和User2、User3和User5。。。但这必须是独一无二的。如果用户1和用户2之间存在对话,则无法在用户1和用户2之间再次创建对话。我不想在对话中复制用户对。