Проблема с Django formview, не удается добавить форму в детальное представление
У меня проблема с установкой классов detail view и form view в django, когда я пытаюсь нажать кнопку send в моей экзаменационной форме django выкидывает эту ошибку: AttributeError: 'TestDetails' object has no attribute 'object'
class TestDetails(DetailView, FormView):
model = Test
form_class = QuestionForm
context_object_name = 'test'
pk_url_kwarg = 'test_id'
template_name = 'app/views/test_details.html'
def get_context_data(self, **kwargs):
test_id = self.kwargs.get('test_id')
context = super().get_context_data(**kwargs)
context['title'] = f'Тест - {test_id}'
context['questions'] = Question.objects.filter(test_id=test_id)
return context
def form_valid(self, form):
print(form.cleaned_data)
return super().form_valid(form)
def form_invalid(self, form):
print(form.cleaned_data)
return super().form_invalid(form)
And this is a full traceback
Internal Server Error: /tests/1
Traceback (most recent call last):
File "C:\Users\User\OneDrive\Рабочий стол\PycharmProjects\cryptosite\.venv\lib\site-packages\django\core\handlers\exception.py", line 55, in inner
response = get_response(request)
File "C:\Users\User\OneDrive\Рабочий стол\PycharmProjects\cryptosite\.venv\lib\site-packages\django\core\handlers\base.py", line 197, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Users\User\OneDrive\Рабочий стол\PycharmProjects\cryptosite\.venv\lib\site-packages\django\views\generic\base.py", line 104, in view
return self.dispatch(request, *args, **kwargs)
File "C:\Users\User\OneDrive\Рабочий стол\PycharmProjects\cryptosite\.venv\lib\site-packages\django\views\generic\base.py", line 143, in dispatch
return handler(request, *args, **kwargs)
File "C:\Users\User\OneDrive\Рабочий стол\PycharmProjects\cryptosite\.venv\lib\site-packages\django\views\generic\edit.py", line 153, in post
return self.form_invalid(form)
File "C:\Users\User\OneDrive\Рабочий стол\PycharmProjects\cryptosite\cryptosite_server\app\views.py", line 98, in form_invalid
return super().form_invalid(form)
File "C:\Users\User\OneDrive\Рабочий стол\PycharmProjects\cryptosite\.venv\lib\site-packages\django\views\generic\edit.py", line 67, in form_invalid
return self.render_to_response(self.get_context_data(form=form))
File "C:\Users\User\OneDrive\Рабочий стол\PycharmProjects\cryptosite\cryptosite_server\app\views.py", line 87, in get_context_data
context = super().get_context_data(**kwargs)
File "C:\Users\User\OneDrive\Рабочий стол\PycharmProjects\cryptosite\.venv\lib\site-packages\django\views\generic\detail.py", line 95, in get_context_data
if self.object:
AttributeError: 'TestDetails' object has no attribute 'object'
Вообще-то, я не знаю, как решить эту проблему
Я думаю, что поскольку вы смешали DetailView и FormView вместе, это может быть причиной этого,
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
test_id = context['test'].id
context['title'] = f'Тест - {test_id}'
context['questions'] = Question.objects.filter(test_id=test_id)
return context