我有一个管理多对多关系的"通过"模型,我希望能够将"直通"模型和目标模型作为平面数据返回,而不是将目标模型嵌套.
因此,使用标准示例来表示多个到一个通过,说这些是模型,
class Person(models.Model):
first_name = models.CharField(max_length=128)
last_name = models.CharField(max_length=128)
favourite_food = models.CharField(max_length=128)
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person, through='Membership')
class Membership(models.Model):
person = models.ForeignKey(Person)
group = models.ForeignKey(Group)
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)
Run Code Online (Sandbox Code Playgroud)
所以我目前返回会员资格的序列化工具是,
class MembershipSerializer(serializers.HyperlinkedModelSerializer):
person = PersonSerializer()
class Meta:
model = Membership
fields = ('id', 'url', 'group', 'date_joined', 'invite_reason', 'person')
class PersonSerializer(serializers.HyperlinkedModelSerializer):
class Meta:
model = Person
fields = ('first_name', 'last_name', 'favourite_food')
Run Code Online (Sandbox Code Playgroud)
所以当我使用MembershipSerializer检索一个会员模型时,我得到了这个json,
{
'id':1,
'url':'http://cheeselovers.com/api/member/1/'
'group':'http://cheeselovers.com/api/group/1/'
'date_joined': '2014-01-24T16:33:40.781Z',
'invite_reason': 'loves cheese',
'person':{
'first_name':'Barry',
'last_name':'CheeseLover', …
Run Code Online (Sandbox Code Playgroud)