为分层模型(django)创建有效的数据库查询
|
考虑以下(Django)模型:
class Source(models.Model):
# Some other fields
type = models.ForeignKey(\'Type\')
class Type(models.Model):
# Some other fields
parent = models.ForeignKey(\'self\')
该模型本身具有外键,因此可以创建层次结构。
假设我们具有以下层次结构:
Website
Blog
News
Social Network
Q&A
Forum
Radio
Government radio
Pirate radio
Commercial radio
Internet radio
我如何有效地查询,以便如果我选择Type
来选择Source
,我还检索具有ѭ3child且是给定类型的子项的Sources
?
我已经尝试遍历整个树,但是显然效率不是很高。
另一种选择是使用ManyToManyField并通过覆盖save()方法自动附加父类型。例如,如果选择“博客”,则还将创建“网站”的记录。但这对我来说似乎太过分了。
没有找到相关结果
已邀请:
3 个回复
温拎凯玛
可以这样查询:
请参阅https://tabo.pe/projects/django-treebeard/docs/tip/api.html了解更多可能的查询
掏得透垦滩
旦彤
假设Source始终与\“ child \”类型相关,而不与\“ parent” \相关。 如果源也可以与\“ parent \”类型相关,则可以对复杂查询使用Q:
如果您的表中有一个真正的分层树,则此方法的可用性将大大降低,因此您应该寻求另一种解决方案。