Я пытаюсь запросить 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