【发布时间】:2014-11-11 06:50:14
【问题描述】:
我有一个模型 FinancialTransaction,它具有典型的 content_type、object_id 和 content_object 字段来设置与我的任何其他模型的通用关系。
我已经想出了如何序列化这个关系以供阅读:
class FinancialTransactionSerializer(serializers.HyperlinkedModelSerializer):
content_object = serializers.SerializerMethodField('get_content_obj_url')
def get_content_obj_url(self, obj):
obj = obj.content_object
view_name = obj._meta.object_name.lower() + "-detail"
s = serializers.HyperlinkedIdentityField(source=obj, view_name=view_name)
s.initialize(self, None)
return s.field_to_native(obj, None)
class Meta:
model = FinancialTransaction
fields = ('id', 'value', 'date', 'memo', 'banking_account', 'content_object')
视图集:
class FinancialTransactionViewSet(viewsets.ModelViewSet):
model = FinancialTransaction
serializer_class = FinancialTransactionSerializer
当我对视图执行 GET 操作时,这将为序列化表示的相关对象创建一个超链接。
但是,我有点纠结于如何制作它,以便我可以使用已经存在的相关对象发布一个新的 FinancialTransaction。
理想情况下,它可以像普通的 ForeignKey 一样工作,我可以在其中发布类似的内容:
{"value": "200.00",
"date": "2014-10-10",
"memo": "repairs",
"banking_account": "http://domain.com/api/banking_account/134/",
"content_object": "http://domain.com/api/property/432/"
}
【问题讨论】:
标签: django django-rest-framework