4

我想获取相关的对象引用,并且我想使用自定义管理器。

外面有东西吗?我如何使用自定义管理器来获取这些对象?

 b.entry_set.all()

例如

b.custom_manager.entry_set.all()
b.entry_custom_manager_set.all()
4

2 回答 2

3

从 Django 1.7 开始,这已经成为可能。假设您有一个Entry包含两个经理的模型:

class Entry(models.Model):
    blog = models.ForeignKey('Blog', on_delete=models.CASCADE)
    ...
    
    objects = models.Manager()  # Default Manager
    entries = EntryManager()    # Custom Manager

然后您可以通过传递manager给来控制您使用的管理器entry_set

b = Blog.objects.get(id=1)
b.entry_set.all() # implicitly use the default manager
b.entry_set(manager='objects').all() # explicitly use the default manager
b.entry_set(manager='entries').all() # explicitly use the entries manager

有关更多信息,请参阅有关使用自定义反向管理器的文档。

于 2021-02-03T17:58:24.170 回答
2

看起来这个功能的票仍然开放https://code.djangoproject.com/ticket/3871

于 2013-04-30T15:23:36.703 回答