Ограничение NOT NULL не работает при запросе PUT в Django

Я новичок в Django и у меня возникают проблемы с обработкой данных формы и необработанных данных в PUT-запросах. Мне нужно обновить записи в модели Person через PUT-запрос. Модель Person имеет несколько полей, включая fname, sname, age и gender, все из которых являются обязательными.

У меня есть представление для обработки запроса PUT, и я пытаюсь обрабатывать как JSON, так и form-data в теле запроса.

Однако, когда я отправляю PUT-запрос через Postman, я сталкиваюсь со следующей ошибкой: `

Exception Type: IntegrityError
Exception Value: NOT NULL constraint failed: api_person.fname`

Для обработки различных форматов запросов я сначала пытаюсь разобрать тело запроса как JSON. Если парсинг JSON не удается, я возвращаюсь к обработке данных формы. Вот соответствующая часть моего представления: `

try:
    # Attempting to parse request body as JSON
    data = json.loads(request.body)
    fname = data.get('fname')
    sname = data.get('sname')
    age = data.get('age')
    gender = data.get('gender')
except json.JSONDecodeError:
    # Handlling form-data if JSON parsing fails
    fname = request.POST.get('fname')
    sname = request.POST.get('sname')
    age = request.POST.get('age')
    gender = request.POST.get('gender')

    # Updating person object with received data
    person.fname = fname
    person.sname = sname
    person.age = age
    person.gender = gender
    person.save()

Я ожидал, что такой подход будет без проблем обрабатывать оба формата запросов и корректно обновлять запись Person. Однако я столкнулся с ошибкой NOT NULL constraint failed: api_person.fname, которая указывает на то, что поле fname отсутствует или пустое.

Несмотря на добавление операторов печати и проверок валидности, я не смог понять, почему fname по-прежнему отсутствует. Любые соображения или предложения по решению этой проблемы будут очень признательны!

Вернуться на верх