Django INNER JOIN by field

时间:2014-04-30 16:17:51

标签: django django-models django-queryset

说我有一个

的模型
class Bottles(models.Model)
    BottleCode = models.IntegerField()

class Labels(models.Model)
    LabelCode = models.IntegerField()

如何获得BottC的查询集,其中BottleCode和LabelCode相等? (不包括没有共同代码的瓶子和标签)

1 个答案:

答案 0 :(得分:2)

可以通过extra()

来实现
Bottles.objects.extra(where=["Bottles.BottleCode in (select Labels.LabelCode from Labels)"])

您可能还需要在表名中添加应用名称前缀,例如app_bottles代替bottles

虽然@danihp在这里有一点意义,但如果您经常遇到这样的问题,当您尝试关联不相关的模型时 - 您应该考虑更改模型设计。