Цикл for в ListView не итерирует данные в Django
этот код не работает, я не знаю, что не так в моем коде.
Вы не определили имя модели в представлении. Добавьте имя модели и попробуйте добавить пользовательское имя контекста_объекта. Для справки проверьте следующее
class BookListView(generic.ListView):
model = Book
context_object_name = 'my_book_list' # your own name for the list as a template variable
queryset = Book.objects.filter(title__icontains='war')[:5] # Get 5 books containing the title war
template_name = 'books/my_arbitrary_template_name_list.html' # Specify your own template name/location
Вы должны указать, какую модель создавать ListView. В вашем случае определите model=Post как
from django.views.generic.list import ListView
class PostList(ListView):
model = Post
template_name = 'blog/index.html'
queryset = Post.objects.filter(status=1).order_by("-created_on")
Или вы также можете использовать get_queryset() как
from django.views.generic.list import ListView
class PostList(ListView):
# specify the model
model = Post
template_name = 'blog/index.html'
def get_queryset(self, *args, **kwargs):
qs = super(PostList, self).get_queryset(*args, **kwargs)
qs = qs.filter(status=1).order_by("-created_on")
return qs