Ограничение 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 по-прежнему отсутствует. Любые соображения или предложения по решению этой проблемы будут очень признательны!