我是Django REST框架的新手,所以我有一个问题
我有两种型号:
class Recipe(models.Model):
recipe_id = models.AutoField(primary_key=True)
title = models.CharField(max_length=100)
category = models.ForeignKey(FoodCategory)
.....
class RecipeIngredients(models.Model):
ri_id = models.AutoField(primary_key=True)
recipe_id = models.ForeignKey(Recipe)
ri_number = models.IntegerField()
ingredient_id = models.ForeignKey(Ingredient)
.....
序列化程序.py:
class RecipeSerializer(serializers. ModelSerializer):
class Meta:
model = Recipe
fields = ('recipe_id', 'title', 'category',....)
class RecipeIngredientSerializer(serializers.ModelSerializer):
class Meta:
model = RecipeIngredients
fields = ('ri_id', 'recipe_id', 'ri_number', 'ingredient_id', ...)
每个输出:
{"recipe_id":1,"title":"Recipe1","category":1, ....} # Recipe
[{"ri_id":15,"recipe_id":1,"ri_number":1,"ingredient_id":6,},
{"ri_id":16,"recipe_id":1,"ri_number":2,"ingredient_id":7,....}] # RecipeIngredients
有一个问题:我是否可以通过类别(配方模型)和成分的id(RecipeIngCredits模型)进行配方查询过滤,这样就可以进行一次查询
例如:
http://127.0.0.1/api/recipes?category=category_name&ingredients=[ingred_list]
主要问题是类别字段在配方模型中,而配料id在配方模型中,但每个配料都引用配方id
您可以重写视图中的
get_queryset()
方法。我们首先得到recipe_ids
的列表,其中ingredient_id
值作为从查询参数接收的ingredient_id
值之一。然后我们过滤所有具有recipe_id
值的菜谱作为recipe_ids
中的值,category
作为查询参数中接收到的category
相关问题 更多 >
编程相关推荐