我正在尝试将 ModelSerializer 用于具有多对多字段的模型。
这是我模型的一部分:
class BaseSearchService(models.Model):
advertisements = models.ManyToManyField(Advertisement, null=False,
blank=False)
Run Code Online (Sandbox Code Playgroud)
这是序列化程序
class SearchTransportSickPersonSerializer(serializers.ModelSerializer):
person = TransportPersonComponentSerializer()
owner = serializers.ReadOnlyField(source='owner.username')
advertisements = serializers.ReadOnlyField()
class Meta:
model = SearchTransportSickPerson
fields = ('name', 'description',
'date_service_full_day', 'date_service', 'origin_lat',
'origin_long', 'destinity_lat', 'destinity_long', 'multiple_stops',
'person', 'owner', 'advertisements')
def create(self, validated_data):
user_data = validated_data.pop('owner')
advs = validated_data.pop('advertisements')
user = User.objects.get(email=user_data.email)
person_data = self.validated_data.pop('person')
person = TransportPersonComponent.objects.create(**person_data)
sickPerson = SearchTransportSickPerson.objects.create(person=person,
owner=user, **self.validated_data)
for adv in advs:
a = Advertisement.objects.get(id=adv.id)
sickPerson.advertisements.add(a)
sickPerson.save()
return sickPerson
Run Code Online (Sandbox Code Playgroud)
我编写了一个单元测试来复制错误:
def test_serializer_2(self):
transportSickPerson …Run Code Online (Sandbox Code Playgroud)