Я, вероятно, средний пользователь Django с довольно большим количеством RTFM под моим поясом.
У меня есть рабочий процесс, который примерно такой:
- Получить учетную запись (модель) объекта.
- Выполнение действий с объектом account (обновление полей и т. Д.)
- Создание связанного использования (model), используя account в качестве внешнего ключа.
- Обновите объект account как часть пользовательского save () для объекта using .
- (Сохраните все изменения в учетной записи , сделанные на шаге 2).
Модели :
class Account(models.Model):
...
credit_balance = models.IntegerField(...)
...
class Usage(models.Model):
...
account = models.ForeignKey(Account, ...)
credit_balance = models.IntegerField(...)
...
def save( self, *args, **kwargs ):
"""Custom usage save to update account stats."""
if self.account:
self.account.credit_balance = self.credit_balance
self.account.save()
Код в различных функциях / методах :
account = Account.objects.get(pk=pk)
[do something to account]
usage = Usage.objects.create(account = account,
tariff_short_name = account.tariff.short_name,
**customer_data['usage'])
Что я действительно изо всех сил пытаюсь решить, если мне нужно сделать:
account.save()
На этом этапе,и каковы последствия?
Кажется, что изменения, которые я внес в учетную запись (например, в шаге 2), сохраняются, когда я сохраняю связанный объект account в использование объектпользовательский метод сохранения.
Почему?Как объект использование «знает», каково текущее состояние экземпляра объекта account ?
Я ожидал, что впоследствии придется сохранить учетную запись объект, потенциально с сохранением (update_fields = []), чтобы предотвратить перезапись обновления использование объекта в учетную запись модель.
Извините, это так эзотеричноЯ просто не понимаю поведение Джанго здесь.Кажется, я могу найти его в TFM, и мой поиск в Google не работает, так как я не уверен, что я ищу.