У меня есть следующее определение сериализатора:
class TestSerializer(serializers.ModelSerializer):
contexts = serializers.SerializerMethodField()
class Meta:
model = Test
fields = (
"id",
"contexts"
)
def get_contexts(self, obj):
return ...
def create(self, data):
print('CREATE')
print(data)
return super().create(data)
def update(self, instance, validated_data):
print('UPDATE')
print(validated_data)
return super().update(instance, validated_data)
и в наборе использования такое
serializer_class = TestSerializer
queryset = Test.objects.all()
Обратите внимание, что поле contexts
не является полем базы данных.Когда я получаю доступ к конечной точке с помощью GET, я правильно получаю информацию с помощью
{
"id": 1,
"contexts": [{...}]
}
Но при отправке тех же данных обратно, что и POST, возникают две проблемы.Первый сериализатор, похоже, не способен сопоставить правильный набор данных, так как я всегда оказываюсь в методе create
, приводящем к ошибке
duplicate key value violates unique constraint
, а при печати data
в методе createконтексты вообще отсутствуют.