Django поведение CreateView класса в зависимости от того какое поле подели заполнено
Допустим есть модель models.py:
class UserData(models.Model):
input_int = models.IntegerField(null=True, blank=True)
input_str = models.CharField(max_length=50, null=True, blank=True)
form.py:
class UserDataForm(forms.ModelForm):
class Meta:
model = UserData
fields = '__all__'
Как сделать ветвление в CreateView классе в зависимости от того, какое поле модели заполнено.
Например views.py:
class UserDataView(generic.CreateView):
model = UserData
form_class = UserDataForm
# !далее псевдокод который не понимаю как реализовать!
if input_int:
#create object with some int value and str==null
elif input_str:
#create object with some str value and int==null
как правильно написать код в CreateView классе в зависимости от того какое поле ввел пользователь?
Ответы (1 шт):
Автор решения: Andrey Maslov
→ Ссылка
Можно реализовать этот функционал в методе form_valid он будет вызываться если пользователь ввел данные формы корректно.
class UserDataView(generic.CreateView):
model = UserData
form_class = UserDataForm
def form_valid(self, form):
if form.cleaned_data.get('input_int'):
# create object with some int value and str==null
elif form.cleaned_data.get('input_str'):
# create object with some str value and int==null