2017-03-23 63 views
0

我想知道使用INNER JOIN條款的SQL查詢的django等價物。我有兩個與ForeignKey鏈接的模型。使用INNER JOIN條款的SQL查詢相當於Django

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; 

回答

3

您可以使用filteronly來獲得所需的結果。

嘗試:

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

完美!謝謝! –