我的標題可能看起來含糊不清,但我很抱歉保存我沒有其他想法來說明這一點。假設我的模型結構如下所示:Django ORM:在多個外鍵上對列表查詢進行分類
class Restaurant(models.Model):
name = models.CharField(...necessary stuff...)
class Cuisine(models.Model):
name = models.CharField(...necessary stuff...)
# thai chinese indian etc.
class Food(models.Model):
restaurant = models.ForeignKey(Restaurant, related_name='restaurant')
cuisine = models.ForeignKey(Cuisine, related_name='cuisine')
name = models.CharField(...)
我想要的是特定餐廳的食物對象列表。但食物對象需要在他們各自的菜餚下,以便我可以通過上下文輕鬆訪問食物。有沒有可能以任何方式實現這一點?
我當前的查詢:
q = Cuisine.objects.prefetch_related('cuisine')
q = q.filter(cuisine__restaurant_id=restaurant.id) # say restaurant.id=1
# here restaurant is the object which I have retrieved
那麼,它的作用是它過濾提供給餐廳的美食,但也列出了這些美食中的所有食物。我只想要餐廳提供的食物。我認爲我錯過了建立模型的方式,但我不確定。如果有人能指出我正確的方向,那將會非常有幫助。謝謝。
謝謝,添加此查詢prefetch_related(Prefetch(...))做了這個把戲:D – flaire