如何解决覆盖相关经理以添加其他过滤器
class Category(Model):
name = CharField(max_length=55,unique=True)
parent = ForeignKey('self',on_delete=CASCADE,null=True,related_name='subcategories',blank=True)
visible = BooleanField(default=True,blank=True)
如何覆盖c.subcategories
的行为,以便仅获取可见的类别。
例如c=Category.objects.get(id=1)
。
c.my_related_manager.all()
等同于c.subcategories.filter(visible=True)
解决方法
您可以使用Prefetch
向prefetch_related
通话中添加过滤器
categories = Category.objects.prefetch_related(
Prefetch('subcategories',queryset=Category.objects.filter(visible=True))
)
for category in categories:
print(category.subcategories.all()) # Will print only visible categories
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。