Python Django Rest框架中的自定义词典
我已经尝试过获得如下JSON:Python Django Rest框架中的自定义词典,python,django,django-rest-framework,Python,Django,Django Rest Framework,我已经尝试过获得如下JSON: { "course_name": "name", "course_id": "44", "icon": 1, "published_at":"2014-10-23T03:15:54Z", "skills": { "self":[ { "skill_name": "Cuidado Emocio
{
"course_name": "name",
"course_id": "44",
"icon": 1,
"published_at":"2014-10-23T03:15:54Z",
"skills": {
"self":[
{
"skill_name": "Cuidado Emocional",
"points": 5,
},
{
"skill_name": "Cuidado Físico",
"points": 5,
}
],
"abilities":[
{
"skill_name": "Principios Básicos",
"points":5,
},
{
"skill_name": "Administración",
"points": 5,
}
]
},
如果技能词典有一个类型为“能力”的字段,我想按类型“能力”进行分组:
这是我的模型
class Ability(models.Model):
ability = models.CharField("Habilidad", max_length=255)
ability_type = models.CharField('Tipo', max_length=2, choices=ABILITY_TYPE)
course = models.ForeignKey(Course, related_name='abilities')
points = models.PositiveIntegerField()
active = models.BooleanField("Activo", default=True)
created_at = models.DateTimeField("Creado en", auto_now_add=True)
updated_at = models.DateTimeField("Actualizado a las", auto_now=True)
class Meta:
verbose_name = u'Habilidad'
verbose_name_plural = u"Habilidades"
ordering = ["-created_at"]
def __unicode__(self):
return self.ability
我尝试过创建这样的序列化程序
class AbilitySerializer(serializers.ModelSerializer):
dictAutoCuidado = {}
dictHabilidades = {}
class Meta:
model = Ability
fields = ('ability', 'points')
def to_native(self, value):
if value.ability_type == 'AU':
self.dictAutoCuidado.update({
'skill_name': value.ability,
'points': value.points
})
else:
self.dictHabilidades.update({
'skill_name': value.ability,
'points': value.points
})
return {
'self': self.dictAutoCuidado,
'ability': self.dictHabilidades
}
class CourseListSerializer(serializers.ModelSerializer):
author = serializers.RelatedField(source='author.name')
objectives = serializers.RelatedField(many=True)
abilities = AbilitySerializer(many=True)
class Meta:
model = Course
fields = (
'id',
'title',
'description',
'objectives',
'abilities',
)
但当我重新加载页面时,JSON是
{
"id": 1,
"title": "La vida es bella",
"created_at": "2014-10-23T02:06:21Z",
"abilities": [
{
"self": {
"points": 100,
"skill_name": "Habilidad 1"
},
"ability": {
"points": 250,
"skill_name": "Habilidad 2"
}
},
{
"self": {
"points": 100,
"skill_name": "Habilidad 1"
},
"ability": {
"points": 250,
"skill_name": "Habilidad 2"
}
},
{
"self": {
"points": 100,
"skill_name": "Habilidad 1"
},
"ability": {
"points": 250,
"skill_name": "Habilidad 2"
}
}
]
}
而且这些能力并不是我想要的分组。你能告诉我我做错了什么以及解决这个问题的方法吗?我试过一些queryset,但不起作用。我试图重写init方法,但没有找到返回自定义口述分组的方法
谢谢。我想这些字段应该是
dictAutoCuidado = serializers.DictField()
dictHabilidades = serializers.DictField()
链接:应该是只读服务,还是要插入/更新条目?因为如果您正在创建一个只读web服务,SerializerMethodField可以满足您的需要。只需只读即可。我将做一项关于这个领域的研究