【问题标题】:Django INNER JOIN by fieldDjango INNER JOIN 按字段
【发布时间】:2014-04-30 16:17:50
【问题描述】:

假设我有一个模型

class Bottles(models.Model)
    BottleCode = models.IntegerField()

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

如何获得 BottleCode 和 LabelCode 相等的瓶子查询集? (即不包括没有通用代码的瓶子和标签)

【问题讨论】:

  • 小心,您的问题是模型设计不佳的明显症状。

标签: django django-models django-queryset


【解决方案1】:

可以通过extra()实现:

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

您可能还需要在表名中添加应用程序名称前缀,例如app_bottles 而不是 bottles

虽然@danihp 在这里有一点道理,但如果您在尝试关联不相关的模型时经常遇到此类查询 - 您可能应该考虑更改模型设计。

【讨论】:

    猜你喜欢
    • 2021-06-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    • 1970-01-01
    • 2020-04-03
    • 2021-06-25
    • 2018-06-12
    相关资源
    最近更新 更多