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