Django Сохранение свойства метода модели в базу данных

У меня есть ModelOne, который имеет метод модели, допустим method_that_does_stuff, с декоратором @property, который вычисляет булево значение, основанное на значении ModelThree, которое является ForeignKey из ModelTwo, которое является ManyToMany из ModelOne. Я пытаюсь сделать так, чтобы при изменении значения method_that_does_stuff, вызванном изменениями в ModelThree, сохранялось булево значение в ModelOne. Ниже приведена моя реализация:

from django.db import models


class ModelThree (models.Model):
    some_input = models.TextField()
    model_two = models.ForeignKey(ModelTwo, on_delete=models.CASCADE)


class ModelTwo (models.Model):
    name = models.CharField(max_length=200)


class ModelOne (models.Model):
    name = models.CharField(max_length=200)
    boolean_field_to_change = models.BooleanField(default=False)
    model_twos = models.ManyToManyField(ModelTwo)

    @property
    def method_that_does_stuff(self):
        # It does some stuff and returns either True or False, but let's assume True
        # The True or False return depends on ModelThree's some_input field
        # If the some_input field doesn't change, then it will stay False
        return True

    def save(self, *args, **kwargs):
        self.boolean_field_to_change = self.method_that_does_stuff
        super(ModelOne, self).save(*args, **kwargs)
<<<Однако по какой-то причине, когда я запускаю оболочку Django и получаю все объекты

, ModelOne становится method_that_does_stuff, но True по-прежнему имеет значение по умолчанию boolean_field_to_change. Я нашел следующее решение: FalseDjango Model Method or Calculation as Field in Database, которое в основном является моей текущей реализацией, но оно не работает. Это потому, что действительно происходит на save? Разве ModelThree не срабатывает на save при изменении значения ModelOne?

Вернуться на верх