Это простой вопрос.Я организовал свои модели так, чтобы большинство объектов, представленных на странице, были одного типа - Item.Модель содержит различные атрибуты, которые помогают мне обслуживать ее по-разному.
У меня есть статьи и видео, которые определяются полем типа в модели.Type = 'article' и т. Д.
У меня есть просмотр списка, который показывает все объекты в модели Item, отсортированные по дате.
class ItemListView(generic.ListView):
# This handles the logic for the UserForm and ProfileForm - without it, nothing happens.
def item(self, request, *args, **kwargs):
return index(request)
def get_queryset(self):
# return Post.objects.filter(published_date__lte=timezone.now()).order_by('-published_date')
return Item.objects.all().order_by('-create_date')
Мне нужен просмотр, отображающий все статьи, отсортированные по дате, и все видео, отсортированные по дате.У меня есть чувство, что я напишу еще много таких представлений.
Есть ли лучший способ сделать это, чем написать новое представление для каждого отдельного запроса?Как, это то, что я сейчас делаю:
Views.py
class ItemListViewArticle(generic.ListView):
# This handles the logic for the UserForm and ProfileForm - without it, nothing happens.
def item(self, request, *args, **kwargs):
return index(request)
def get_queryset(self):
# return Post.objects.filter(published_date__lte=timezone.now()).order_by('-published_date')
return Item.objects.filter(type__contains='article').order_by('-create_date')
class ItemListViewVideo(generic.ListView):
# This handles the logic for the UserForm and ProfileForm - without it, nothing happens.
def item(self, request, *args, **kwargs):
return index(request)
def get_queryset(self):
# return Post.objects.filter(published_date__lte=timezone.now()).order_by('-published_date')
return Item.objects.filter(type__contains='video').order_by('-create_date')
urls.py
path('new/', views.ItemListView.as_view(), name='new_list'),
path('new/articles', views.ItemListViewArticle.as_view(), name='article_list'),
path('new/videos', views.ItemListViewVideo.as_view(), name='video_list'),