У меня довольно простые отношения между двумя моделями: Person
и городами, которые посетил человек (City
).
class Person(models.Model):
...
cities = models.ManyToManyField(City)
Я пишу страницу администратора для этого, и у меня есть отдельный класс формы для Person
, который вообще не упоминает города, и у меня есть класс, унаследованный от admin.ModelAdmin
, которыйделает.
Мне нужно вызвать функцию, передав полностью сохраненный экземпляр Person
, все поля должным образом обновлены и сохранены в БД, включая города.Однако, какой бы из методов save...
я переопределил, я могу получить экземпляр Person
для сохранения и прочитать новые значения из БД, однако я не могу получить обновленные города из БД.Те, что я пробовал, это save_m2m
и _save_m2m
в форме, save_form
, save_related
в ModelAdmin.В каждом из этих мест я звоню super().<the method>
и затем проверяю person.cities.all()
.Каждый раз, когда я получаю старое значение (то, которое было в БД до обновления, а не новое значение из формы).
Есть ли место, в которое я могу нажать, чтобы получить фактическое сохраненное и зафиксированноезначение поля «многие ко многим»?Есть ли способ обернуть что-нибудь в transaction.atomic
или что-нибудь в этом роде?Или я делаю это совершенно неправильно?