@YuriyCherniy

Есть ли смысл использовать условие if для form.is_valid() если поле формы forms.ChoiceField?

Дана такая форма:
class MessengerForm(forms.Form):

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        initial_messenger = UserProfile.objects.first().messenger
        self.fields['messenger'].initial = initial_messenger

    messenger = forms.ChoiceField(
        choices=[
            ('whatsapp', 'WhatsApp'),
            ('telegram', 'Telegram')
        ],
        label='Мессенджер для связи'
    )

Есть ли необходимость проверять валидность данных, если пользователь может ввести только предлагаемые варианты?
Другими словами, как будет правильнее, так:
def post(self, request, **kwargs):
    messanger_form = MessengerForm(request.POST)
    if messanger_form.is_valid():
        profile = UserProfile.objects.get(pk=kwargs['pk'])
        profile.messenger = messanger_form.cleaned_data['messenger']
        profile.save()
        return super().post(self, request, **kwargs)
    else:
        return somthing

или этого достаточно:
def post(self, request, **kwargs):
    messanger_form = MessengerForm(request.POST)
    messanger_form.is_valid():
    profile = UserProfile.objects.get(pk=kwargs['pk'])
    profile.messenger = messanger_form.cleaned_data['messenger']
    profile.save()
    return super().post(self, request, **kwargs)

С точки зрения нуба if не нужен так, как выбор данных предоставлен приложением и они всегда будут валидны. Но с учётом того, что нуб может ошибаться есть большая вероятность оставить дыру в приложении. Как поступить?
  • Вопрос задан
  • 75 просмотров
Пригласить эксперта
Ваш ответ на вопрос

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

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