【发布时间】:2022-01-22 02:00:22
【问题描述】:
假设我定义了几个简单的模型:
class Pizza(models.Model):
name = models.CharField()
# Get the name of topping here
...
class Topping(models.Model):
pizza = models.ForeignKey(Pizza)
我可以做的一件事是查询Topping,然后访问Pizza。但这不是我想要的。我想做一个反向关系查询。我想在Pizza 中获取Topping,如果存在这样的Topping,可能会有一些Pizza 没有Topping。使用django 和drf
我怎样才能做到这一点?
我什至尝试过:
Pizza.objects.filter()
.prefetch_related("topping_set")
我们不喜欢菠萝披萨
【问题讨论】:
-
如果你要在pizza中只添加一个topping,你可以使用foreignkey字段,否则如果pizza可以有多个topping,那么你必须使用manytomany字段。使用每个浇头的详细信息创建浇头模型。创建一个带有 manytomany 字段的 Pizza 模型。因此,每个比萨可以有多个浇头,您可以获得比萨中使用的浇头实例列表,还可以获得使用任何特定浇头的比萨列表。请参阅以下链接以了解多对多字段。 docs.djangoproject.com/en/4.0/topics/db/examples/many_to_many
-
我不确定我是否理解您要执行的操作。您想从某些比萨中获取配料,还是根据配料过滤比萨?你能给我们一个比我们不喜欢菠萝披萨更具体的例子吗?
标签: python-3.x django django-rest-framework relational-database