м2м возвращается нет - PullRequest
0 голосов
/ 02 июля 2019

Когда пользователь изменяет URL-адрес объекта, объект должен быть удален, и должен быть создан новый объект:

    ### other fields here ###

    issue = models.ManyToManyField(Issue, null=False, blank=False,)

    def __init__(self, *args, **kwargs):
        super(MyModel, self).__init__(*args, **kwargs)
        self.__original_url = self.url

    def save(self, *args, **kwargs):
        if self.url != self.__original_url:
            my_new_object = MyModel.objects.create(####)
            my_new_object.save()
            my_new_object.issue.add(self.issue) 

Проблема в том, что self.issue перенастраивается None. Я тоже пробовал

my_new_object.issue.add(MyModel.objects.get(pk = self.id).issue)

То же самое. Что с этим не так?

Ответы [ 2 ]

0 голосов
/ 02 июля 2019

Проблема здесь:

my_new_object.issue.add(self.issue)

, где вы в основном пытаетесь добавить QuerySet вместо экземпляра.

Попробуйте с помощью:

issues = self.issue.all()
for issue in issues:
    self.issue.add(issue)

или более краткий:

my_new_object.issue.add(*self.issue.all())
0 голосов
/ 02 июля 2019

Используйте следующее:

obj = my_new_object.save(commit=False)
obj.issue.add(self.issue) 
obj.save()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...