django 문서에 사용 된 모델에서 through 인수를 사용하여 중개자 역할을하는 모델을 가리키는 M2M 관계에 대해 살펴 보겠습니다.django-rest에서 M2M 관계를 사용하는 방법
class Person(models.Model):
name = models.CharField(max_length=128)
def __unicode__(self):
return self.name
class Group(models.Model):
name = models.CharField(max_length=128)
members = models.ManyToManyField(Person,
through='Membership')
def __unicode__(self):
return self.name
class Membership(models.Model):
person = models.ForeignKey(Person)
group = models.ForeignKey(Group)
date_joined = models.DateField()
class Meta:
ordering = ['date_joined']
내가 또한 date_joined 필드으로 정렬 각 그룹 내부의 모든 사람, 을 포함하는 그룹 모델의 읽기 - 쓰기보기 휴식을 갖고 싶어 이제 가정합니다.
class GroupSerializer(serializers.ModelSerializer):
members = serializers.SlugRelatedField(source='membership_set',
many=True,
read_only=False,
slug_field='person_id',
required=True)
class Meta:
model = Group
fields = ('id', 'name', 'members')
동안 읽기 작업에 그것이 잘 작동합니다
{
"id": 1,
"name": "U2",
"members": [
20,
269,
134,
12,
]
}
이 나는 시리얼을 썼다 : 내가 얻을하고자하는 JSON 직렬화 (회원은 자신의 ID 만 설명) 다음과 같다 쓰기위한 것이 아닙니다. 위의 정의 직렬화 주어진, 그것은에 의해 진행됩니다, 그래서 나는 시리얼을 정의하는 방법 :
- 그룹 개체
- (멤버쉽 객체를 생성하여) 그룹의 각 구성원을 추가
설명서의 관련 부분에 대한 링크 또는 저자의 답변에 대한 명확한 답변을 보내 주셔서 감사합니다. 내가하려는 일은 프레임 워크에서별로지지받지 않는 것이 유감입니다. 직접 코드를 작성하여 작업을 수행 할 수있는 방법을 제안 해 주시겠습니까? 올바른 방법은 무엇입니까? 다시 감사합니다! – Dragster
제가 도와 드릴 수있어서 기쁩니다 :) 작성 부분에 대해서는 ** post/create ** 메소드 또는 ** post_save ** 메소드의 두 가지 위치에서 수행 할 수 있습니다. ** post_save **에서이 작업을 수행 할 것을 제안합니다. 그 이유는 프레임 워크가 Group 객체를 만들 수 있도록 허용하고 남아있는 작업 만 구성원을 추가하기 때문입니다. 이 방법을 사용하는 방법에 대한 작은 코드 스 니펫으로 내 대답을 편집합니다. – AdelaN
정말 고마워, 당신의 지원은 매우 감사드립니다! – Dragster