如何为相关模型使用其他对象管理器?

时间:2019-06-06 18:00:34

标签: django django-models django-admin

我有几节课:

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的{​​{1}}管理器进行查询,并且我认为通过设置OtherManager,我将能够实现此(https://docs.djangoproject.com/en/2.2/topics/db/managers/#using-managers-for-related-object-access)。不幸的是,这不起作用。有任何想法吗?特别是我想在管理员中实现这一点,如果那有所作为的话。

1 个答案:

答案 0 :(得分:0)

澄清一下,这确实可以正常工作。这里的问题很详细。我使用的是Django admin,它不按我期望的方式查询相关字段。实际上,它为default manager使用了相关字段queryset。如果您想做我想做的事情,这是一个很好的简单示例:https://books.agiliq.com/projects/django-admin-cookbook/en/latest/filter_fk_dropdown.html