0

「場所」への1:nを持つモデル「アイテム」があります。つまり、アイテムのロケーション履歴があります。

Location には、"Room"、"Room" から "Floor"、"Floor" から "Building" への FK があります。ここで、現在特定のフロアにあるすべてのアイテムを選択したいと考えています。

リスト内包表記で解決できますが、1 つのクエリで解決するより良い方法はありますか?

- アップデート -

ご回答ありがとうございます。残念ながら、要件を満たしていません。問題を明確にするために、モデルのコード スニペットをいくつか示します。

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 で指定された特定のフロアに現在配置されているすべてのアイテムを取得したいと考えています (モデルでわかるように、アイテムは再配置できます)。再度、感謝します。

4

2 に答える 2

0
items = Item.objects.filter(location__room__floor__name='building 1', location__room__floor__num=1)
于 2010-09-25T17:16:03.617 に答える
0

私はあなたのモデルを正確に知りませんが、そのようなものはそれを行うべきです:

items_on_floor_one = Item.objects.filter(\
                     location__in=Location.objects.filter(room__floor__number=1,\
                     room__floor__building__name='my_building'))
于 2010-09-24T18:13:43.333 に答える