Я хочу изменить свойства связанных моделей определенной модели, но я не хочу их сохранять, я просто хочу временно их изменить.Изменение отношений модели Django без их сохранения
Возьмем, например, эти модели:
class Duck(models.Model):
name = models.StringField()
class Duckling(models.Model):
name = models.StringField()
parent = models.ForeignKey(Duck, related_name='children')
Теперь предположим, есть некоторые данные в базе данных, то при попытке это:
for duckling in some_duck.children.all():
duckling.name = 'test-to-change-name'
for duckling in some_duck.children.all():
print(duckling.name)
Во второй цикл будет печататься оригинал имена, а не имена, которые мы задали в первом цикле for. Если бы вы были save()
их в первом цикле for, это сработало бы, но я хочу временно изменить их имена, только для этого процесса.
У кого-нибудь есть идея, если это возможно? Я думал о переписывании some_duck.children
, но тогда мне нужно было бы создать объект RelatedManager
, который является довольно странным и, вероятно, взломанным. Надеюсь, что есть лучшие способы.
Редактировать: Я хочу, чтобы он обновлялся на объекте some_duck
, так что, когда вы получаете доступ к some_duck.children
, вы получаете обновленные данные там.
Да, это было бы, конечно, работать, но когда вы получите доступ к нему из объекта 'some_duck', вы все равно получите тот же результат. Извините, это требование, я обновлю вопрос. – rednaw