【发布时间】:2020-11-11 11:04:44
【问题描述】:
我在我的 models.py 中扩展了 Group 模型并创建了相应的序列化程序,它工作正常。但是,当我尝试在用户序列化程序中序列化组字段时,我只获得默认字段。 让我展示部分代码:
models.py
class GroupExtended(Group):
description = models.TextField(blank=True)
digitaltwin_permissions = models.ManyToManyField(
to = DigitaltwinPermission,
blank = True,
default = None,
related_name = "gemelo"
)
panel_permissions = models.ManyToManyField(
to = PanelPermission,
blank = True,
default = None,
related_name = "panel"
)
def __str__(self):
return str(self.name)
class Meta:
verbose_name_plural = "4. Grupos"
serializer.py
class GroupExtendedSerializer(serializers.ModelSerializer):
digitaltwin_permissions = DTPSerializer(read_only=True, many=True)
panel_permissions = PPSerializer(read_only=True, many=True)
class Meta:
model = GroupExtended
fields = ['id','name','description','digitaltwin_permissions','panel_permissions','permissions']
class UserSerializer(serializers.ModelSerializer):
groups = GroupExtendedSerializer(read_only=True, many=True)
class Meta:
model = User
fields = '__all__'
我通过用户 API 获得的是以下 JSON:
{
"id":1,
"groups":[
{"id":2,
"name":"Admin",
"permissions":[]}
],
etc
}
相反,我想获得:
{
"id":1,
"groups":[
{"id":2,
"name":"Admin",
"permissions":[],
"description": "whatever",
"digitaltwin_permissions":[*serialized fields*],
"panel_permissions": [*serialized fields*]
}
],
etc
}
我做错了什么?有没有可能?
谢谢!
【问题讨论】:
-
在你的 models.py 中,你不想要 null=True 而不是 blank=True 吗?
-
我觉得对我来说没关系,也不影响序列化器。
标签: django serialization django-rest-framework