查询Django表中间

时间:2017-07-24 17:14:10

标签: django django-models

我在Django 1.10中开发我的应用程序,其中我有以下模型:

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)

我想进行查询,在那里我可以了解所有拥有共同设备的家庭。 它可能很简单但我无法进行查询。

感谢您的帮助

3 个答案:

答案 0 :(得分:0)

from .models import House_appliance

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

这将返回一个来自House_appliance的所有对象的查询集,其中的设备等于您选择的任何设备。仔细检查以确保字段名称正确。在实际数据库中查找。

此外,您可能需要考虑将模型重命名为HouseAppliance。根据Python / Django样式指南,这是常见的做法。

答案 1 :(得分: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将返回所有具有相同设备的房屋

答案 2 :(得分:0)

导入您在以下位置执行查询的模型类:

from models import House_appliances

对该模型类执行查询:

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

matchedHouses是共享设备对象SomeApplianceObject的房屋。

.filter(appliance=SomeApplianeObject)查找该条件的所有对象,在本例中为外键设备。

.house访问外键house对象