get_or_create未使用我需要的属性创建对象

问题描述 投票:0回答:1

所以我试图get_or_create一个对话对象。现在,如果已经创建了对象,则代码可以正常工作。但是,如果未创建,它将创建对话对象,但不会创建我尝试传递的成员。空的对话对象。 members是用户的多个字段。我在这里错了吗?

观看次数/消息

def message (request, profile_id):

    if request.method == 'POST':

        form = MessageForm(request.POST)
        if form.is_valid():
            form.save()


            return redirect('dating_app:messages', profile_id)
    else:
        conversation, created = Conversation.objects.filter(members = request.user).filter(members= profile_id).get_or_create()


        other_user = conversation.members.filter(id=profile_id).get()

        form = MessageForm({'sender': request.user, 'conversation': conversation})

        context = {'form' : form, 'other_user': other_user }

        return render(request, 'dating_app/message.html', context)

models.py/对话

class Conversation(models.Model):
    members = models.ManyToManyField(settings.AUTH_USER_MODEL)
django
1个回答
0
投票

所以,我创建对象后使用'add()'来添加成员,因为它是多对多字段。

            conversation, created = Conversation.objects.filter(members = request.user).filter(members= profile_id).get_or_create()

            conversation.members.add(request.user, profile_id)
© www.soinside.com 2019 - 2024. All rights reserved.