Python 如何访问模型&x27;是嵌套的一对多关系吗?

Python 如何访问模型&x27;是嵌套的一对多关系吗?,python,django,orm,django-rest-framework,Python,Django,Orm,Django Rest Framework,我有三种型号,如下所示: class Restaurant(models.Model): name = models.CharField(max_length=200) address = models.CharField(max_length=200) category = models.CharField(max_length=100, blank=True, null=True) class MenuCategory(models.Model): rest

我有三种型号,如下所示:

class Restaurant(models.Model):
    name = models.CharField(max_length=200)
    address = models.CharField(max_length=200)
    category = models.CharField(max_length=100, blank=True, null=True)

class MenuCategory(models.Model):
    restaurant = models.ForeignKey(Restaurant, on_delete=models.CASCADE)
    name = models.CharField(max_length=200)


class MenuItem(models.Model):
    menu_category = models.ForeignKey(MenuCategory, on_delete=models.CASCADE)
    name = models.CharField(max_length=100)
    price = models.DecimalField(max_digits=6, decimal_places=2)
一家餐厅有许多菜单类别,其中有许多菜单项

这是建立这些关系的正确方式吗?对于给定的餐厅,获取所有菜单项的最有效方式是什么


我希望有一种比在给定餐厅的所有菜单类别之间循环更有效的方法。

您可以通过以下方式获得给定餐厅的所有菜单项:

MenuItem.objects.filter(menu_category__restaurant=my_restaurant)
由于
ForeignKey
s将索引添加到表中,因此这种连接通常会很快完成

SELECT menu_item.*
FROM menu_item
JOIN menu_category
    ON menu_item.menu_category_id = menu_category.id
WHERE menu_category.restaurant_id = my_restaurant_id