最佳答案
我有一个关于处理 m2m/through 模型和它们在 django rest 框架中的表示的问题。让我们举一个经典的例子:
Py:
from django.db import models
class Member(models.Model):
name = models.CharField(max_length = 20)
groups = models.ManyToManyField('Group', through = 'Membership')
class Group(models.Model):
name = models.CharField(max_length = 20)
class Membership(models.Model):
member = models.ForeignKey('Member')
group = models.ForeignKey('Group')
join_date = models.DateTimeField()
Py:
imports...
class MemberSerializer(ModelSerializer):
class Meta:
model = Member
class GroupSerializer(ModelSerializer):
class Meta:
model = Group
视图:
imports...
class MemberViewSet(ModelViewSet):
queryset = Member.objects.all()
serializer_class = MemberSerializer
class GroupViewSet(ModelViewSet):
queryset = Group.objects.all()
serializer_class = GroupSerializer
当 GETING 一个 Member 的实例时,我成功地接收到了所有成员的字段以及它的组——但是我只获得了组的详细信息,而没有从会员模型中获得额外的细节。
换句话说,我收到 期待:
{
'id' : 2,
'name' : 'some member',
'groups' : [
{
'id' : 55,
'name' : 'group 1'
'join_date' : 34151564
},
{
'id' : 56,
'name' : 'group 2'
'join_date' : 11200299
}
]
}
注意 加入 _ 日期。
我已经尝试了这么多的解决方案,当然包括 Django rest-框架官方页面,但似乎没有人给出一个合适的简单的答案-我需要做什么才能包括这些额外的字段?我发现使用 django-stasypie 更加直接,但是有一些其他的问题,我更喜欢静止框架。