我有一个树形结构模型:
class XMLStruct(models.model):
parent = models.ForeignKey('XMLStruct')
# other attributes
我的目标是获取树的叶子,这意味着这是在父属性中找不到的所有条目。我尝试使用Queryset执行此操作,但我不知道如何执行以下操作:
leaves = XMLStruct.objects.filter(parent__not_in = XMLStruct.objects.all().parent)
有没有人有线索?我可以通过给孩子而不是父母来构建树,但我发现这种表示更好。
谢谢!
答案 0 :(得分:0)
我找到了一种方法:
parents = XMLStruct.objects.all().values_list('parent',flat=True)
all = XMLStruct.objects.all()
result = list(set(all) - set(parents))
它不优雅但它有效。如果有人有更好的解决方案,请随时回答!
答案 1 :(得分:0)
这将在单个查询中完全符合您的要求:
class XMLStruct(models.model):
parent = models.ForeignKey('XMLStruct', related_name='children')
# other attributes
leaves = XMLStruct.objects.filter(children=None)