Дана такая форма:
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
не нужен так, как выбор данных предоставлен приложением и они всегда будут валидны. Но с учётом того, что нуб может ошибаться есть большая вероятность оставить дыру в приложении. Как поступить?