bac*_*i32 6 python django serialization generic-foreign-key django-rest-framework
我在模型上使用Generic Relation并尝试使用Django Rest Framework对其进行序列化.但是,执行以下操作会给我一个属性错误:
'GenericForeignKey' object has no attribute 'field'
Run Code Online (Sandbox Code Playgroud)
models.py
class AdditionalInfo():
#other fields
seal_type = models.ForeignKey(ContentType,
related_name='seal'
)
seal_id = models.PositiveIntegerField(null=True)
seal = generic.GenericForeignKey(
'seal_type',
'seal_id')
Run Code Online (Sandbox Code Playgroud)
serializers.py
class AdditionalInfoSerializer():
seal = serializers.Field(source='seal')
Run Code Online (Sandbox Code Playgroud)
我究竟做错了什么?我在django rest框架文档中找不到相关内容.
如果要序列化通用外键,则需要定义自定义字段,以明确确定序列化关系目标的方式.
只要你的AdditionalInfo模型具有模型的通用关系SealType1和SealType2,你可以看到下面的例子.
class SealRelatedField(serializers.RelatedField):
def to_native(self, value):
"""
Serialize seal object to whatever you need.
"""
if isinstance(value, SealType1):
return ...
elif isinstance(value, SealType2):
return ...
raise Exception('Unexpected type of tagged object')
Run Code Online (Sandbox Code Playgroud)
您可以在Django REST框架文档中找到更多详细信息.
| 归档时间: |
|
| 查看次数: |
3145 次 |
| 最近记录: |