Предположим, у меня есть формы, как показано ниже:
class FormA(models.ModelForm):
...
class FormB(models.ModelForm):
....
class FormC(models.ModelForm):
.....
Теперь я хочу получить формы в представлении класса:
Класс FormCreateView (CreateView):
модель = пользователь
def post(self, request, *args, **kwargs):
if self.request.user.user_level == 1:
get FormA
if self.request.user.user_level == 2:
get FormB
if self.request.user.user_level == 3:
get Formc
return reverse('xyz')
Так я и сделал. Но форма не отправляется и выдает ошибку типа:
Exception Value:
is_valid() missing 1 required positional argument: 'self'
Exception Location:
/home/bishwa/PycharmProjects/sharefile/sharefile/users/views.py in post, line 64
класс
class UserCreateView(CreateView):
model = User
# form_class = UserCreationForm
template_name = "users/create_user.html"
success_url= "/users/create"
def get_form_class(self):
if self.request.user.user_level == 1 or self.request.user.user_level == 10:
# form_class = UserCreationForm
return UserCreationForm
elif self.request.user.user_level == 20:
# form_class = UserCreationFormCompanyManager
return UserCreationFormCompanyManager
else:
# form_class = UserCreationFormHomeManager
return UserCreationFormHomeManager
def post(self, request, *args, **kwargs):
form = self.get_form_class()
user_level = User.objects.get(id=request.user.id)
# form = UserCreationFormHomeManager(request.POST)
# if request.method=='POST':
# form = UserCreationFormCompanyManager(request.POST)
if user_level == 20:
if form.is_valid():
obj = form.save(commit=False)
obj.company = self.request.user.company
# obj.password = make_password(form.cleaned_data['password'])
print(obj)
obj.save()
return obj
elif user_level == 30:
# if request.method=='POST':
# form = UserCreationFormHomeManager(request.POST)
if form.is_valid():
obj = form.save(commit=False)
obj.company = self.request.user.company
obj.home = self.request.user.home
# obj.password = make_password(form.cleaned_data['password'])
print(obj)
obj.save()
return obj
else:
# if request.method=='POST':
# form = UserCreationFormHomeManager(request.POST)
if form.is_valid():
# obj.password = make_password(form.cleaned_data['password'])
print(obj)
obj = form.save()
return obj
return HttpResponseRedirect(reverse('users:create-user'))
У меня есть эти три формы в моем form.py
. Когда я попытался вызвать форму с помощью метода request.POST
(т.е. с одним комментарием), форма не сохраняется.