Tôi có một câu hỏi về việc xử lý các mô hình m2m / through và cách trình bày của chúng trong khuôn khổ phần còn lại django. Hãy lấy một ví dụ cổ điển:
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
Khi NHẬN một phiên bản của Thành viên, tôi nhận thành công tất cả các trường của thành viên và cả các nhóm của nó - tuy nhiên tôi chỉ nhận được thông tin chi tiết của các nhóm mà không có thêm chi tiết nào đến từ mô hình Thành viên.
Nói cách khác, tôi mong đợi nhận được:
{
'id' : 2,
'name' : 'some member',
'groups' : [
{
'id' : 55,
'name' : 'group 1'
'join_date' : 34151564
},
{
'id' : 56,
'name' : 'group 2'
'join_date' : 11200299
}
]
}
Lưu ý join_date .
Tôi đã thử rất nhiều giải pháp, tất nhiên bao gồm cả trang chính thức của Django Rest-Framework về nó và dường như không ai đưa ra câu trả lời rõ ràng thích hợp về nó - tôi cần làm gì để thêm những trường bổ sung này? Tôi thấy nó dễ dàng hơn với django-ngonypie nhưng có một số vấn đề khác và thích khuôn khổ nghỉ ngơi hơn.