2017-03-23 12 views
0

INNER JOIN節を使用するSQLクエリのdjangoに相当することを知りたいと思います。私はForeignKeyにリンクされている2つのモデルを持っています。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) 

私はSQLクエリを使用している場合、私は、この使用するアイテムのテーブルに

をfalseに設定した値を「item_is_locked」しているのRequest-テーブルからフィールドを取得したい:

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

パーフェクト!ありがとうございました! –