это кажется очень простой вещью, поэтому я ожидаю, что это будет прямой ответ ... извините, если это глупо.
У меня есть модель с именем Item.У него есть заголовок, основной текст, ссылки и т. Д. Однако у него также есть атрибут «тип», который представляет собой «видео», «подкаст» или «статья».
В настоящее время я использую общийкласс DetailView для отображения страницы сведений для Item.Шаблон называется item_detail.html и передается в запрос из DetailView.
Все, что я хочу сделать, - это сделать так, чтобы представление отправило другой шаблон, основанный на атрибуте type.Поэтому, если item.type = 'article' отображает шаблон статьи, если item.type = 'video' отображает шаблон видео.
Возможно ли это, пока еще используется DetailView?
Это то, что я пробовал в представлении:
class ItemDetailView(generic.DetailView):
model = Item
if Item.type == 'video':
template_name = 'curate/item_video.html'
Это не сделало то, что я хотел - на самом делеШаблон просто отображается как обычно.Я что-то пропустил?Я также подумывал о создании совершенно новой модели для «видео», «подкастов» и «статей», но я бы предпочел этого избежать и использовать «Элемент» в качестве мощного типа контента на веб-сайте.
views.py
class ItemDetailView(generic.DetailView):
model = Item
if Item.type == 'video':
template_name = 'curate/item_video.html'
models.py
class Item(models.Model):
slug = models.SlugField(unique=True,max_length=1000)
type = models.CharField(max_length=2000,
choices=type_choices,
default='article',
blank=True)
urls.py
path('<int:pk>/', views.ItemDetailView.as_view(), name='item_detail')