ฉันมีคำถามเกี่ยวกับการจัดการกับ m2m / through models และการนำเสนอใน django rest framework ลองมาดูตัวอย่างคลาสสิก:
Models.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()
serializers.py:
imports...
class MemberSerializer(ModelSerializer):
class Meta:
model = Member
class GroupSerializer(ModelSerializer):
class Meta:
model = Group
views.py:
imports...
class MemberViewSet(ModelViewSet):
queryset = Member.objects.all()
serializer_class = MemberSerializer
class GroupViewSet(ModelViewSet):
queryset = Group.objects.all()
serializer_class = GroupSerializer
เมื่อได้รับอินสแตนซ์ของสมาชิกฉันจะได้รับฟิลด์ทั้งหมดของสมาชิกและกลุ่มของมันสำเร็จ - อย่างไรก็ตามฉันได้รับรายละเอียดของกลุ่มเท่านั้นโดยไม่มีรายละเอียดเพิ่มเติมที่มาจากรูปแบบการเป็นสมาชิก
กล่าวอีกนัยหนึ่งฉันคาดว่าจะได้รับ:
{
'id' : 2,
'name' : 'some member',
'groups' : [
{
'id' : 55,
'name' : 'group 1'
'join_date' : 34151564
},
{
'id' : 56,
'name' : 'group 2'
'join_date' : 11200299
}
]
}
หมายเหตุjoin_date
ฉันได้ลองใช้วิธีแก้ปัญหามากมายรวมถึงหน้าอย่างเป็นทางการของDjango Rest-Framework เกี่ยวกับเรื่องนี้และดูเหมือนจะไม่มีใครให้คำตอบที่ชัดเจนเกี่ยวกับเรื่องนี้ - ฉันต้องทำอย่างไรเพื่อรวมฟิลด์พิเศษเหล่านี้ ฉันพบว่ามันตรงไปตรงมามากกว่ากับ django-tasteypie แต่มีปัญหาอื่น ๆ และชอบที่จะวางกรอบ