Django поменяйте местами ненулевые поля - получите IntegrityError из-за unique_together - PullRequest
0 голосов
/ 12 марта 2019

Моя модель содержит ненулевой ForeignKey для другой модели, которая также является частью unique_together.

class MyModel:
    ...
    a_link = models.ForeignKey(AnotherModel, null=False)
    ...

    class Meta:
        unique_together = ((a_link, ))

Теперь я хочу поменять a_link между экземплярами MyModel a и b. (На самом деле немногим более двух).

Я получаю IntegrityError с Duplicate, что, возможно, не так странно, но даже atomic() ничего не меняет к лучшему:

with atomic():
    for obj, to_ in a_list.items():
        obj.type = to_
        obj.save()

Даже установка их снаружи и просто зацикливание save() внутри atomic() не помогает.

Застрял ли я в создании алгоритма, который помещает объекты в правильном порядке, использует переменную tmp для одного из них, зацикливает список и затем устанавливает последний?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...