Как я могу использовать другой менеджер объектов для связанных моделей? - PullRequest
1 голос
/ 06 июня 2019

У меня есть пара классов:

class Person(models.Model):
    address = models.ForeignKey(Address, on_delete=models.CASCADE)

class Address(LiveModel):
    address = models.CharField(max_length=512)

    some_manager = SomeManager()
    some_other_object_manager = OtherManager()

    class Meta:
        base_manager_name = 'some_other_object_manager'

Поскольку я установил some_manager, по умолчанию используется менеджер SomeManager, что хорошо.НО, если я запрашиваю Person, я хочу использовать диспетчер Address OtherManager для запросов, и я подумал, что, установив base_manager_name, я смог бы добиться этого (https://docs.djangoproject.com/en/2.2/topics/db/managers/#using-managers-for-related-object-access).К сожалению, это не работает. Любые идеи? В частности, я пытаюсь добиться этого в админке, если это имеет значение.

1 Ответ

0 голосов
/ 13 июня 2019

Чтобы уточнить, это работает как задумано.Вопрос здесь был в деталях.Я использовал администратора Django, который не запрашивает связанные поля, как я ожидал.На самом деле он использует соответствующие поля default manager для queryset.Если вы хотите сделать то, что я пытаюсь сделать, это хороший простой пример: https://books.agiliq.com/projects/django-admin-cookbook/en/latest/filter_fk_dropdown.html

...