2017-03-23 1 views
0

Ich würde gerne die Django-Entsprechung für die SQL-Abfrage kennen, die die INNER JOIN-Klausel verwendet. Ich habe zwei Modelle, die mit ForeignKey verknüpft sind.Django Äquivalent für SQL-Abfrage mit INNER JOIN -Klausel

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) 

Ich möchte Felder aus der Anfrage-Tabelle erhalten, die die „item_is_locked“ Wert auf false gesetzt in Punkt-Tabelle

Bei der Verwendung von SQL-Abfrage hat, würde ich diese verwenden:

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

Antwort

3

Sie können filter und only verwenden, um das gewünschte Ergebnis zu erhalten.

Versuchen:

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

Perfect! Danke! –