我有一个查询集categories = unipart.categories.all()
,它是unipart对象链接到的所有类别。
但是,我想从此列表中删除顶级类别 - 即。具有子类别的那些unipart也列在其中。
或者parent_id等于查询集中的category_ids之一的那些类别。
例如,如果列出了unipart: 肉豆蔻(父母=香料)和 香料(父母=食物)
然后我只想包括Nutmeg - 所以基本上我想从查询集'弹出'Spices。
最好的方法是什么?我宁愿不使用清单。
这是我的模特:
class UniPart (models.Model):
categories=models.ManyToManyField(Category, related_name = 'unipart')
class Category (MPTTModel):
category = models.CharField(max_length=250)
oc_id= models.IntegerField()
parent = TreeForeignKey('self', blank=True, null=True, related_name='children')
def __unicode__(self):
答案 0 :(得分:2)
您可以将具有绑定到此unipart项目的子类别的类别排除在外:
categories = unipart.categories.exclude(
categorieschild__unipart = unipart).distinct()
此处categorieschild
是类别子项的相关名称。