【问题标题】:Django equivalent for SQL query using INNER JOIN -clause使用 INNER JOIN 子句的 SQL 查询的 Django 等效项
【发布时间】:2017-08-16 12:24:15
【问题描述】:

我想知道使用 INNER JOIN 子句的 SQL 查询的 django 等效项。我有两个与 ForeignKey 链接的模型。

class Item(models.Model):
    item_name = models.CharField(max_length=100)
    item_is_locked = models.BooleanField(default=False)

class Request(models.Model):
    item = models.ForeignKey(Item, on_delete=models.CASCADE)
    item_owner = models.ForeignKey(settings.AUTH_USER_MODEL)
    message_body = models.TextField(max_length=5000, null=True)

我想从请求表中获取项目表中“item_is_locked”值设置为 false 的字段

如果使用 SQL 查询,我会使用这个:

SELECT Request.item_owner,Request.message_body FROM Request INNER JOIN Item ON Request.item_id=Item.id AND Item.item_is_locked=False;

【问题讨论】:

    标签: sql django django-models


    【解决方案1】:

    您可以使用filteronly 来获得所需的结果。

    试试:

    Request.objects.filter(item__item_is_locked=False).only('item_owner', 'message_body')
    

    【讨论】:

    • 完美!谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-11-04
    • 1970-01-01
    • 2010-12-19
    • 2014-02-24
    • 2021-10-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多