Почему мой запрос не работает? «Значение исключения: невозможно использовать QuerySet для« Беседы »: используйте QuerySet для« профиля »» - PullRequest
0 голосов
/ 23 апреля 2020

Я пытаюсь запросить 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...