我有一个模型“Item”,它有1:n到“Location”。意思是,有物品的位置历史。
位置有一个FK到“房间”,“房间”到“楼层”和“楼层”到“建筑物”。 现在,我想选择当前位于特定楼层的所有项目。
我可以用列表理解来解决它,但是有没有更好的方法可以用一个查询解决它?
- 更新 -
感谢您的回答,遗憾的是,它们与要求不符。为了澄清这个问题,这里有一些模型的代码片段:
class Item(models.Model):
[..]
class Location(models.Model):
item = models.ForeignKey(Item)
room = models.ForeignKey(Room)
created_at = models.DateTimeField(auto_now_add=True)
[..]
class Room(models.Model):
floor = models.ForeignKey(Floor)
[..]
class Floor(models.Model):
building = models.ForeignKey(Building)
[..]
class Building(models.Model):
[..]
我想获取当前位于特定楼层的所有项目,由楼层ID指定(正如您在模型中看到的,项目可以重新定位)。再次感谢。
答案 0 :(得分:0)
我不完全了解你的模型,但是应该这样做:
items_on_floor_one = Item.objects.filter(\
location__in=Location.objects.filter(room__floor__number=1,\
room__floor__building__name='my_building'))
答案 1 :(得分:0)
items = Item.objects.filter(location__room__floor__name='building 1', location__room__floor__num=1)