ошибка автоматического поля id при сохранении в сериализаторе - PullRequest
0 голосов
/ 27 сентября 2018

Я буду вставлять только необходимый код моей проблемы.У меня есть следующая модель:

class Event(models.Model):
    id = models.AutoField(primary_key=True)

Сериализатор:

class EventSerializer(serializers.ModelSerializer):

    class Meta:
        model = Event
        fields = ('id', 'name')

    @transaction.atomic
    def create(self, validated_data):
        print("before")
        print(validated_data)
        event = Event.objects.create(**validated_data)
        print("after")

        return event

Я в сети event = Event.objects.create(**validated_data) следующая ошибка null value in column "id" violates not-null constraint.Когда я печатаю проверенные данные, они не содержат никаких идентификаторов.Как мне решить мою проблему?

1 Ответ

0 голосов
/ 27 сентября 2018

В DRF AutoField поля по умолчанию доступны только для чтения. Вы можете изменить это поведение, задав extra_kwargs

class EventSerializer(serializers.ModelSerializer):
    id = serializers.IntegerField() # Here
    class Meta:
        model = Event
        fields = ('id', 'name')
        extra_kwargs = {'id': {'read_only': False}}

    @transaction.atomic
    def create(self, validated_data):
        print("before")
        print(validated_data)
        event = Event.objects.create(**validated_data)
        print("after")

        return event
...