models.py
的一部分:
class FoodCuisine(models.Model):
cuisine = models.CharField(max_length=64)
def __str__(self):
return self.cuisine
class CuisineTypes(models.Model):
cuisine_types = models.CharField(max_length=64)
cuisine = models.ForeignKey(FoodCuisine, on_delete=models.CASCADE)
def __str__(self):
return self.cuisine_types
class Meta:
ordering = ('cuisine_types',)
class Food(models.Model):
name = models.CharField(max_length=192)
veg = models.BooleanField(default=0)
cuisine_type = models.ForeignKey(CuisineTypes, on_delete=models.CASCADE)
def __str__(self):
return self.name
def _cuisine(self):
return self.cuisine_type.cuisine
serializers.py
:
我希望FoodCuisineSerializer
返回一个嵌套列表,该列表将按照各自的烹饪类型和菜系对所有食物进行分类。在
分类是直截了当的,第一级是菜系,第二级是菜系类型,第三级是菜品。在
问题是FoodCuisineSerializer
只返回第一级,即只显示菜系列表。但是我想要上一段中给出的食物的完整嵌套列表。在
编辑1:
https://pastebin.com/dmVbyS0G是我从djangoshell得到的。在
编辑2:
如果我写
>>> y = FoodCuisineSerializer(FoodCuisine.objects.get(id=2))
>>> y.cuisine_type
Traceback (most recent call last):
File "<console>", line 1, in <module>
AttributeError: 'FoodCuisineSerializer' object has no attribute 'cuisine_type'
为什么会出现上述错误?在
编辑3:
把source
放在了正确的位置,但现在我得到了:
>>> y = FoodCuisineSerializer(FoodCuisine.objects.get(id=2))
>>> y.data # I get the desired result having OrderedDict
>>> y = FoodCuisineSerializer(FoodCuisine.objects.all())
>>> y.data
[Error]
[错误]:https://pastebin.com/0DW28qv4下一步是什么?在
将queryset序列化为
} in DRF-Serializer
} (
^{pr2}$参考
1reverse relationship
2^{
更新1
由于
FoodCuisine.objects.all()
是一个^{list
类型的对象),您应该在序列化程序中传递many=True
,如下所示相关问题 更多 >
编程相关推荐