Tôi muốn tạo một trang với một biểu mẫu và mỗi khi tôi gửi biểu mẫu, nó sẽ thêm một mục vào danh sách bên dưới biểu mẫu.Django - Trộn ListView và CreateView
tôi có thể làm cho nó hoạt động sử dụng 2 trang:
- một trang bằng cách sử dụng mixin
CreateView
để thêm các mục - một trang
ListView
để có danh sách.
Nhưng tôi đang cố gắng có biểu mẫu và danh sách trên cùng một trang. Vì vậy, tôi đã cố gắng để tạo ra một lớp với cả mixin:
class FormAndListView(ListView, CreateView):
pass
Sau đó, tôi đã sử dụng lớp này:
FormAndListView.as_view(
queryset=PdfFile.objects.order_by('id'),
context_object_name='all_PDF',
success_url = 'listview',
form_class = UploadFileForm,
template_name='textfrompdf/index.html',)),
Nhưng khi tôi cố gắng để tải trang, tôi nhận được lỗi: Exception Value: 'FormAndListView' object has no attribute 'object'
Traceback:
File "C:\Program Files\Python_2.7\lib\site-packages\django\core\handlers\base.py" in get_response
111. response = callback(request, *callback_args, **callback_kwargs)
File "C:\Program Files\Python_2.7\lib\site-packages\django\views\generic\base.py" in view
47. return self.dispatch(request, *args, **kwargs)
File "C:\Program Files\Python_2.7\lib\site-packages\django\views\generic\base.py" in dispatch
68. return handler(request, *args, **kwargs)
File "C:\Program Files\Python_2.7\lib\site-packages\django\views\generic\list.py" in get
122. return self.render_to_response(context)
File "C:\Program Files\Python_2.7\lib\site-packages\django\views\generic\base.py" in render_to_response
94. template = self.get_template_names(),
File "C:\Program Files\Python_2.7\lib\site-packages\django\views\generic\list.py" in get_template_names
134. names = super(MultipleObjectTemplateResponseMixin, self).get_template_names()
File "C:\Program Files\Python_2.7\lib\site-packages\django\views\generic\detail.py" in get_template_names
122. if self.object and self.template_name_field:
Exception Type: AttributeError at /PDF/
Exception Value: 'FormAndListView' object has no attribute 'object'
Tôi không biết cách gỡ lỗi đó. Bắt đầu từ đâu?
Có quá nhiều điều xảy ra với quan điểm này và sẽ rất khó khăn để duy trì. Người dùng 'jondykeman' có giải pháp an toàn hơn và thanh lịch hơn cho vấn đề này. – zedr