【发布时间】:2020-12-24 08:35:36
【问题描述】:
我有一个名为 Menu 的模型,它与另一个名为 category 的模型具有多对多关系。这两个模型都有一个名为 is_active 的字段,它指示菜单或类别是否可用。 好的,然后我有一个名为 RestaurantMenus 的 api,它返回一家餐厅的所有活动菜单,并扩展了它们的类别,响应是这样的:
Menu 1
Category 1
Category 2
Menu 2
Category 3
Menu 3
Category 4
Category 5
Category 6
现在我尝试实现的是仅对那些处于活动状态的菜单和类别进行序列化(is_active = True)。过滤活动菜单很简单,但过滤它的子菜单是我正在努力解决的问题。
我的模特:
class Category(models.Model):
menu = models.ForeignKey(Menu, related_name='categories', on_delete=models.CASCADE)
name = models.CharField(max_length=200)
class Menu(models.Model):
name = models.CharField(max_length=200)
我的序列化器:
class CategorySerializer(serializers.ModelSerializer):
class Meta:
model = Category
fields = "__all__"
class MenuSerializer(serializers.ModelSerializer):
categories = CategorySerializer(many=True, read_only=True)
class Meta:
model = Menu
fields = "__all__"
附:类别模型本身与另一个模型称为项目具有多对多关系,该模型也具有 is_active 字段。我也希望这些效果相同,但我从问题中删除了它,因为我认为过程应该是相同的。所以实际上 api 响应是这样的:
Menu 1
Category 1
Item 1
Item 2
Item 3
Category 2
Item 4
【问题讨论】:
-
请添加您的型号和序列化代码。
标签: django django-rest-framework