返回一个模型的嵌套列表 [英] return a nested list of one model
本文介绍了返回一个模型的嵌套列表的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有一个查找表,其中包含课程类别和子类别,分别为:
I have a lookups table that contains course categories and subcategories separate:
{
"id": 138,
"lookup": "CRS_CTGRY",
"attr1": "Arts and Humanities",
"attr2": "الفنون والعلوم الإنسانية",
"attr3": null,
"attr4": null,
"attr5": null,
"editable": 1
},
{
"id": 155,
"lookup": "CRS_SB_CTGRY",
"attr1": "Photography",
"attr2": "النصوير",
"attr3": "138",
"attr4": null,
"attr5": null,
"editable": 1
},
它们之间的关系是 attr3 = id_of_the_category&& attr1 = CRS_SB_CTGRY
我想将它们合并到一个列表中,例如:
I want to merge them together in one list like:
{"id":138,"
"lookup":"CRS_CTRGY",
"name":"Arts and Humanities",
"subcategories":{"id": 154,
"lookup": "CRS_SB_CTGRY",
"attr1": "Music",
"attr2": "الموسيقي",
"attr3": "138",
"attr4": null,
"attr5": null,
"editable": 1
}}
这是我的模型。
class Lookups(models.Model):
lookup = models.CharField(max_length=45)
attr1 = models.CharField(max_length=100)
attr2 = models.CharField(max_length=100, blank=True, null=True)
attr3 = models.CharField(max_length=100, blank=True, null=True)
attr4 = models.CharField(max_length=100, blank=True, null=True)
attr5 = models.CharField(max_length=100, blank=True, null=True)
editable = models.IntegerField(blank=True, null=True)
class Meta:
managed = True
db_table = 'lookups'
unique_together = (('lookup', 'attr1', 'attr2', 'attr3', 'attr4', 'attr5'),)
我该怎么做?在哪里放置代码?在序列化程序类中?
How can i do it? and where to put the code? in the serializers class?
推荐答案
您需要为子类别实现序列化程序:
You need to implement serializer for your subcategory:
class SubcategorySerializer(serializers.ModelSerializer):
class Meta:
model = Lookups
fields = ( 'id', 'lookup', 'attr1', 'attr2', 'attr3',)
在以下情况下将其用于类别序列化程序您选择所有相关子类别:
And use it in your Category Serializer when you select all related subcategories:
class CategorySerialier(serializers.ModelSerializer):
subcategories = serializers.SerializerMethodField(read_only=True)
class Meta:
model = Lookups
fields = ( 'id', 'lookup', 'subcagories')
def get_subcategories(self, obj):
subs = Lookups.objects.filter(attr3=obj.id)
return SubcategorySerializer(subs,many=True).data
这篇关于返回一个模型的嵌套列表的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文