【发布时间】:2016-02-05 03:27:49
【问题描述】:
我正在尝试将我的 django 项目与 mailchimp 的 api 集成,以将用户添加到列表中,我需要生成一些以下格式的 json:
{
"email_address": "EMAIL",
"status": "subscribed",
"merge_fields": {
"FNAME": "FIRST_NAME",
"LNAME": "SURNAME"
},
遗憾的是,我在使用嵌套的 merge_field 时遇到了一些困难。我希望以下工作:
class MergeSerializer(serializers.Serializer):
FNAME = serializers.SerializerMethodField('get_first_name')
LNAME = serializers.SerializerMethodField('get_surname')
def get_first_name(self, obj):
return obj.first_name
def get_surname(self, obj):
return obj.surname
class CreateContactSerializer(serializers.Serializer):
email_address = serializers.EmailField()
status = serializers.SerializerMethodField('get_alternative_status')
merge_fields = MergeSerializer(read_only=True)
def get_alternative_status(self, obj):
return "subscribed"
这只会生成一些带有 email_address 和 status 的 json,并且完全忽略了 merge_fields。几个小时后,我完全不知道下一步该尝试什么。有人知道如何解决这个问题吗?
因为我认为 marshmallow 框架的文档更清晰一些,所以我也用他们的包进行了尝试,但是返回的结果完全相同(所以忽略了我的 merge_fields):
class MergeFieldsSchema(Schema):
FNAME = fields.String(attribute="first_name")
LNAME = fields.String(attribute="surname")
class CreateContactSerializer(Schema):
merge_fields = fields.Nested(MergeFieldsSchema)
email_address = fields.String()
status = fields.Constant("subscribed")
【问题讨论】:
-
如何将数据模型附加到序列化程序并查看...?
标签: python json django serialization django-rest-framework