Изменить поведение внешнего поиска с другим менеджером в Django - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть простая модель с настраиваемым менеджером для фильтрации

MyCustomManager(models.Manager):
    def all(self):
        return super().get_queryset().filter(flag=True)

SimpleModel(models.Model):
    objects = MyCustomManager()

    flag = models.BooleanField(default=True)

SimpleModelWithFK(models.Model):
    simple_model = models.ForeignKey(SimpleModel)

Возможно ли глобально предотвратить получение SimpleModel экземпляров, для которых flag установлено на False?

Конечно, сейчас вызовы all() на SimpleModel будут вести себя как таковые, но, например, вызов SimpleModelWithFK().objects.all() вернет все связанные SimpleModel с, включая те, с flag=False.Я знаю, что мог бы также переопределить Manager для SimpleModelWithFK, но это, кажется, не так оптимально, и для более крупных приложений было бы труднее гарантировать отсутствие утечек.

...