擅长:python、mysql、java
<p>我遇到了这个问题,我的解决方案(使用DRF 3.6)是在对象上使用SerializerMethodField并显式查询成员表,如下所示:</p>
<pre><code>class MembershipSerializer(serializers.ModelSerializer):
"""Used as a nested serializer by MemberSerializer"""
class Meta:
model = Membership
fields = ('id','group','join_date')
class MemberSerializer(serializers.ModelSerializer):
groups = serializers.SerializerMethodField()
class Meta:
model = Member
fields = ('id','name','groups')
def get_groups(self, obj):
"obj is a Member instance. Returns list of dicts"""
qset = Membership.objects.filter(member=obj)
return [MembershipSerializer(m).data for m in qset]
</code></pre>
<p>这将返回groups键的dict列表,其中每个dict都是从membershipsserializer序列化的。要使其可写,可以在MemberSerializer中定义自己的create/update方法,在该方法中迭代输入数据并显式创建或更新成员资格模型实例。</p>