如何在Django中进行有效查询?

时间:2018-10-07 03:00:00

标签: django django-queryset

我有以下模型,它们与Django的内置模型length lst - 1Tag相关。给定Site,查询所有相关Site的最有效方法是什么

Tag

我目前正在这样做,这似乎太复杂了:

class InlineTag(models.Model):
    tag = models.ForeignKey(Tag, null=False)
    topic = models.ForeignKey(Topic, null=False)
    order = models.PositiveIntegerField(null=False, blank=True)

class Topic(models.Model):
    description = models.CharField(max_length=255, blank=False)
    sites = models.ManyToManyField(Site)

1 个答案:

答案 0 :(得分:1)

您可以使用reverse foreign key lookups在一个查询中获取所有标签:

tags = Tag.objects.filter(inlinetag__topic__sites=current_site).distinct()

distinct()确保您不会得到重复的结果,例如,如果一个站点有多个共享相同标签的主题。

请注意,Django没有内置的Tag模型-大概是为此您使用了第三方应用程序。