Задать вопрос
@PiloTeZ
...

Как валидировать только переданные поля в ModelForm?

Есть модель TeamParticipant и модель-форма TeamParticipantUpdateForm.
Есть поля email, name, surname, все они обязательные.
Нужно отредактировать запись БД через модель через POST запрос, но есть проблема. Например, если я хочу отредактировать только email, то валидация выдает мне ошибку, что name и surname обязательные поля.
Но дело в том, что это ведь редактирование, я понимаю, что эти поля обязательные, но в теории они ведь должны браться из модели TeamParticipant.

Модель TeamParticipant
class TeamParticipant(models.Model):
    email = models.EmailField('Email')
    name = models.CharField('Имя', max_length=64)
    surname = models.CharField('Фамилия', max_length=64)


Модель TeamParticipantUpdateForm
class TeamParticipantUpdateForm(ModelForm):
    class Meta:
        model = TeamParticipant
        fields = ['email', 'name', 'surname',]


Сценарий
request = HttpRequest()
        request.POST = {
            "email": "testparticipantupdated@ya.ru",
        }

        participant = TeamParticipant.objects.get(email="invitedparticipant@ya.ru")
        participant_data = TeamParticipantUpdateForm(
            request.POST,
            instance=participant
        )

        if participant_data.is_valid():
            participant_data.save()
# Тут выдает ошибку, что name и surname не заполнены, хотя я передал параметр instance в TeamParticipantUpdateForm


Итого, как сделать так, чтобы можно было в POST передать только email, и только он обновился в БД при save. Единственное, что удалось, это удалить name и surname из TeamParticipantUpdateForm, тогда вроде нормально, но это не решение.
  • Вопрос задан
  • 56 просмотров
Подписаться 1 Простой Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы