我想创建简单的聊天系统,我的模型:Django的对话 - get_or_create MultipleObjectsReturned
class Conversation(models.Model):
users = models.ManyToManyField(User, related_name='users')
date = models.DateTimeField(auto_now_add=True)
class Message(models.Model):
user = models.ForeignKey(User)
conversation = models.ForeignKey(Conversation, related_name='conversation')
content = models.TextField()
date = models.DateTimeField(auto_now_add=True)
和我的观点:
def conversation(request, username):
recipient = User.objects.get(username=username)
conversation, created = Conversation.objects.get_or_create(
users__in=[recipient, request.user]
)
if created:
conversation.users.add([recipient, request.user])
我想通过创建创建多对多场会话的用户连接。 当我去/ conversations/user_name get_or_create检查对话是否存在,如果没有,然后创建与当前登录的用户和用户从url的新对话。
我的问题是:
MultipleObjectsReturned at /conversations/user_name
get() returned more than one Conversation -- it returned 2!
我该怎么解决呢?可能它的问题与这manytomany领域..我怎么能限制users__id查找1?
对话已经存在,并有对话的两个对象...这就是为什么发生错误... – zaidfazil