Вложенный сериализатор создает новый объект

У меня есть сериализатор под названием EntrySerializer, и он должен возвращать данные о сотрудниках, но если я хочу создать новую запись, он хочет создать новый объект персонала и выдает ошибку. Есть ли что-нибудь вроде поля только для чтения для моего сериализатора? Он должен создать новую запись, но присвоить уже созданный объект персонала.

class EntrySerializer(serializers.ModelSerializer):

    staff = serializers.SerializerMethodField('get_staff')

    def get_staff(self, obj):
        return MyUserSerializer(obj.staff).data

    class Meta:
        model = Entry
        depth = 1
        fields = ('time_spend', 'staff',)

Ошибка:

django.db.utils.IntegrityError: ERROR: NULL-значение в столбце "staff_id" отношения "tagesbericht_tagesbericht_Entry" Not-Null-Constraint DETAIL: (54, 00:00:08.5, null, 61).

POST:

"tagesbericht_entry_set": [ { "штат": 2, "time_spend": "00:12:08" } ]

Думаю, вам нужно добавить поле staff_id для записи.

class EntrySerializer(serializers.ModelSerializer):
    staff = MyUserSerializer(read_only = True)
    staff_id = Serializers.IntegerField(write_only = True)

    class Meta:
        model = Entry
        depth = 1
        fields = ('time_spend', 'staff', 'staff_id')

А полезная нагрузка POST должна быть

{
    "staff_id": 2,
    "time_spend": "00:12:08"
}
Вернуться на верх