Возможно, вы можете попробовать MultipleObjectMixin
в вашем UpdateView.
Вы можете определить с помощью этого миксина get_queryset()
и получить доступ к object_list
в шаблоне. Проверьте документацию для получения дополнительной информации
РЕДАКТИРОВАТЬ
Конечно, вот краткий пример кода:
# demo/models.py
from django.db import models
class Title(models.Model):
title = models.CharField(max_length=100)
# demo/views.py
from django.views.generic import UpdateView
from django.views.generic.list import MultipleObjectMixin
from demo.models import Title
class UpdateWithListView(UpdateView, MultipleObjectMixin):
model = Title
template_name_suffix = '_update_form_with_list'
fields = ['title']
object_list = Title.objects.all()
update_with_list_view = UpdateWithListView.as_view()
# my_project/urls.py
from django.contrib import admin
from django.urls import path
from demo.views import update_with_list_view
urlpatterns = [
path('<int:pk>', update_with_list_view),
path('admin/', admin.site.urls),
]
И шаблон:
demo/templates/demo/title_update_form_with_list.html
Current title: {{ object.title }}
<form method="post">{% csrf_token %}
{{ form.as_p }}
<input type="submit" value="Update">
</form>
<p>All other titles:</p>
{% for title in object_list %}
<p>Title: {{ title.title }}</p>
{% endfor %}
И это то, что я получил в шаблоне (у меня было 10 «заголовков» в моей БД, каждый со случайнымсимвол):

РЕДАКТИРОВАТЬ 2 Что касается вашего отредактированного вопроса, вам не хватает определения "object_list" в вашем представлении,что требуется для MultipleObjectMixin
.
Обратите внимание, что в моем примере кода в views.py
я определяю object_list
с помощью запроса, который будет заполнять object_list
. Я считаю, что ошибка, которую вы получаете, заключается в том, что миксин ожидает получения object_list
.
Пожалуйста, попробуйте добавить:
# demo/views.py
# omitted imports
class UpdateWithListView(UpdateView, MultipleObjectMixin):
model = Title
template_name_suffix = '_update_form_with_list'
fields = ['title']
object_list = Title.objects.all() # make sure to define this with your query
update_with_list_view = UpdateWithListView.as_view()
Если я не ошибаюсь, get_queryset()
метод заботится о поиске объекта для UpdateView
, в то время как object_list
относится к ListView
.
. Пожалуйста, попробуйте добавить object_list
к вашему представлению и проверьте, решает ли это проблему.