Django - Ошибка при фильтрации кверисета полей формы
Я создал форму и представление (FBV) для добавления новой модели. Я переопределил __init__
формы, но теперь, когда я пытаюсь получить доступ к моему представлению, оно выдает ошибку У объекта 'CreationForm' нет атрибута 'get'
Мое мнение:
def Creation(request):
user = None
if request.user.is_authenticated:
user = request.user
# POST METHOD
if request.method == "POST":
form = CreationForm(request.POST)
form.user = user
if form.is_valid():
sheet = form.save()
return redirect("sheet_detail", pk=sheet.id)
form = CreationForm(initial={'user': request.user})
return render(request, "jde/creation_form.html", context={"form": form})
Моя форма :
class CreationForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(CreationForm, self).__init__(self, *args, **kwargs)
self.fields["contest"].queryset = Contest.objects.filter(active=True)
class Meta:
...
Ошибка возникает из-за того, что вы передаете self
в вызов super().__init()
. Его удаление должно решить вашу проблему.
class CreationForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
super(CreationForm, self).__init__(*args, **kwargs)
self.fields["contest"].queryset = Contest.objects.filter(active=True)
class Meta:
...