我试图查询Conversation
,它有一个名为members
的多对多字段。我这样做是为了将Conversation
传递给我的InstantMessage
对象,因为该对象有一个名为conversation
的外键,该外键连接到Conversation
。我需要首先检查成员是否是Conversation
的成员,如果是,则获取,如果不是,则创建,然后将其传递到我的InstantMessage
对象中。但由于某种原因,我不能质疑它,我不明白为什么
错误
Exception Value:
Cannot use QuerySet for "Conversation": Use a QuerySet for "Profile".
views.py/message
def message (request, profile_id):
other_user = get_object_or_404(Profile,id=profile_id)
members = Conversation.objects.filter(members= request.user).filter(members= other_user)
conversation, created = Conversation.objects.get_or_create( members = members)
if request.method == 'POST':
form = MessageForm(request.POST, instance= request.user, sender=request.user, conversation = conversation, message=message, date=date)
if form.is_valid():
form.save()
return redirect ('dating_app:messages.html')
else:
conversation, created = Conversation.objects.get_or_create( members= [request.user, other_user])
form = MessageForm(instance= request.user, sender=request.user, conversation= conversation, message=message, date=date)
context = {'form' : form }
return render(request, 'dating_app:messages.html', context)
models.py/Conversatin和InstantMessage
class Conversation(models.Model):
members = models.ManyToManyField(settings.AUTH_USER_MODEL)
class InstantMessage(models.Model):
sender = models.ForeignKey(settings.AUTH_USER_MODEL, related_name= 'sender',on_delete=models.CASCADE )
conversation = models.ForeignKey(Conversation, on_delete=models.CASCADE)
message = models.TextField()
date = models.DateTimeField(auto_now_add=True)
def __unicode__(self):
return self.message
目前没有回答
相关问题 更多 >
编程相关推荐