2017-07-24 57 views
0

我發展我在Django 1.10的應用程序中,我有以下型號:查詢在Django表中間

class House(models.Model): 
    code = models.IntegerField() 
    ...... 

class Appliance(models.Model): 
    code = models.IntegerField() 
    ........ 

class House_appliance(models.Model): 
    house = models.Foreignkey(House) 
    appliance = models.Foreignkey(Appliance) 

我想進行查詢,在那裏我可以知道,在一個設備中的所有家庭共同。 這可能很簡單,但我無法進行查詢。

我感謝你的幫助

回答

0
from .models import House_appliance 

houses = House.objects.filter(appliance_id = name_of_the_appliance) 

這將返回所有從House_appliance有等於不管你選擇的設備對象的查詢集。仔細檢查以確保字段名稱是正確的。看看實際的數據庫。

另外,您可能需要考慮將您的模型重命名爲HouseAppliance。根據Python/Django風格指南,這是很常見的做法。

0

如果你有一個設備,它的代碼是「ABC」

house = House_appliance.objects.values('appliance_id', flat=True).filter(house__code='ABC') 
all_house = House.objects.filter(pk__in=house) 

所以這裏all_house VAR將返回有相同的設備上所有的房子

0

導入你在執行查詢的模型類:

from models import House_appliances

對那個模型類查詢:

matchedHouses = House_appliances.objects.filter(appliance=SomeApplianceObject).house

哪裏matchedHouses是共享設備對象SomeApplianceObject房子。

.filter(appliance=SomeApplianeObject)找到該條件的所有對象,在這種情況下是外鍵設備。

.house訪問外鍵house對象