Я работаю над структурой отдыха django с записываемыми вложенными сериализаторами. Используя документацию (https://www.django -rest-framework.org / api-guide / relations / # writable-nested-serializers ), я могу создавать вложенные отношения, используя сериализатор в качестве поля.
Вот моя проблема. Я получил сообщение об ошибке ниже, когда я пытаюсь создать вложенное отношение, используя сериализатор в качестве поля, когда этот сериализатор также имеет вложенное отношение.
TypeError: прямое назначение обратной стороне связанного набора запрещено. Вместо этого используйте info_object.set ().
Вот часть моего сериализатора:
class BuildMessageSerializer(serializers.ModelSerializer):
class Meta:
model = models.BuildMessageInfo
fields = '__all__'
class BuildSerializer(serializers.ModelSerializer):
info_object = BuildMessageSerializer(
many=True,
required=False,
allow_null=True)
class Meta:
model = models.Build
fields = '__all__'
def create(self, validated_data):
infos_result = validated_data.pop('info_object')
build_res = models.Build.objects.create(**validated_data)
for info_result in infos_result:
models.BuildMessageInfo.objects.create(
build_res=build_res,
**info_result)
build_res.labels.set(infos_result)
return build_res
class JobResultSerializer(serializers.ModelSerializer):
class Meta:
model = models.JobResult
fields = '__all__'
class JobBuildResult(JobResultSerializer):
build_result = BuildSerializer(many=True)
def create(self, validated_data):
builds_data = validated_data.pop('build_result')
job_result = models.JobResult.objects.create(**validated_data)
for build_data in builds_data:
models.Build.objects.create(job_result=job_result,**build_data)
return job_result
Здесь вы можете найти полезную нагрузку для моего модульного теста:
self.build_payload = {
'daily_key': '365v4a9e8fv4s9efb8',
'computer': 'SOPBAMBOO01',
'branch_name': 'branch',
'plan_key': 'key',
'build_number': 25,
'pull_request': False,
'build_result': [
{
'name': 'app',
'project': 'ble',
'platform': 'board',
'mode': 'release',
'os': 'bm',
'ide': 'iar',
'result': 'pass',
'warning': 0,
'error': 0,
'info_object': [
{
'message_type': 'message',
'message': 'message',
'log_link': 'message'
}
]
}
]
}
Я не знаю, как справиться с этой ошибкой. Я новичок в django, и я также не понимаю, что означает ошибка, используя info_object.set ()
Спасибо за любую помощь