使用自定义管理器引用相关对象

4

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

是否有其他方法?如何使用自定义管理器来获取这些对象?

 b.entry_set.all()

E.g

b.custom_manager.entry_set.all()
b.entry_custom_manager_set.all()
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

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


2

没问题。请关注未来的发布说明,看起来这个问题可能已经被修复了,但由于功能冻结尚未添加到1.5版本中,所以可能会在1.6版本中出现。 - Ngenator

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接