Django等效于使用INNER JOIN -clause的SQL查询

时间:2017-03-23 18:54:05

标签: sql django django-models

我想知道使用INNER JOIN -clause的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)

我想从Request-table中获取在Item-table中将“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;

1 个答案:

答案 0 :(得分:3)

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

尝试:

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