Объект QuerySet не имеет атрибута save с использованием django. - PullRequest
0 голосов
/ 06 августа 2020
opportunity = Opportunity.objects.filter(created_by__client=client, id=pk).exclude(is_deleted=True)

for opp in opportunity:
    id = opp.id
    name = opp.name
    contact = opp.contact.id

project = Project.objects.filter(client=client)    
project.opportunity = id
project.name = name
project.contact = contact

project.save()

Ответы [ 2 ]

0 голосов
/ 06 августа 2020

Если вы хотите обновить только одну сущность в django наборе запросов. Вам нужно получить его с помощью методов .first() (https://docs.djangoproject.com/en/3.1/ref/models/querysets/#first) или .get() (https://docs.djangoproject.com/en/3.1/ref/models/querysets/#get):

id = opp.id
name = opp.name
contact = opp.contact.id
project = Project.objects.filter(client=client).first() # get first value from qs

project.opportunity = id
project.name = name
project.contact = contact

project.save()

Также вы можете обновить все элементы queryset с методом .update() (https://docs.djangoproject.com/en/3.1/ref/models/querysets/#update):

id = opp.id
name = opp.name
contact = opp.contact.id
project = Project.objects.filter(client=client).update(
     opportunity=id,
     name=name,
     contact=contact,
)
0 голосов
/ 06 августа 2020

Project.objects.filter(client=client) возвращает набор объектов. Если вы хотите получить только 1 объект, используйте Project.objects.filter(client=client).first() или Project.objects.get(client=client) (рекомендуется)

Затем используйте метод .save(), он будет работать правильно

...