我希望在单个episode.object }页面中呈现每个{{ video.object },其中它对{video.object}很好。但它没有显示任何情节对象..。我想要呈现的最后一个模板video.html可以在这里看到我尝试过的https://ibb.co/K9NMXtS
{% for episode in episodes %}
{{ episode.title }}
{% endfor %}但那不起作用。以下是其他配置:-
#models.py
class Video(models.Model):
title = models.CharField(max_length=100, unique=True)
slug = models.SlugField(max_length=200, unique=True)
year = models.CharField(max_length=4)
category = models.CharField(max_length=3)
trailer = models.URLField(default='')
def __str__(self):
return self.title
def get_absolute_url(self):
from django.urls import reverse
return reverse("video.html", kwargs={"slug": str(self.slug)})
class Episode(models.Model):
video = models.ForeignKey(Video, related_name='episodes', on_delete=models.CASCADE)
title = models.CharField(max_length=512)
air_date = models.DateField()
videolink = models.URLField(default='')
def __str__(self):
return self.title
# urls.py
urlpatterns = [
path('video/<slug>/', views.VideoDetail.as_view(), name='videos'),
]
# view.py
class VideoDetail(DetailView):
model = Video
template_name = 'video/video.html'
def get_context_data(self, *args, **kwargs):
context = super().get_context_data(*args,**kwargs)
context['Episodes'] = Episode.objects.all()
return context发布于 2020-06-25 13:47:42
Python和Django模板区分大小写。在视图中使用Episodes,这与模板中的episodes不匹配。更改其中一个以使其匹配(episodes /Django中的模型实例推荐使用)。
接下来,您正在使用Episode.objects.all(),它将显示所有的插曲。如果您只想要该视频的情节,那么过滤查询集:
context['episodes'] = Episode.objects.filter(video=self.object)或者,也可以通过向后执行外键获得相同的结果:
context['episodes'] = self.object.episodes.all()发布于 2020-06-24 14:01:33
在超级标签中添加VideoDetail,在调用模板{{ episode.video.slug }}时添加self,并在url中添加足够的片段
path('video/<slug>/', views.VideoDetail.as_view(), name='videos'),类VideoDetail(DetailView):model = Episode template_name =‘视频/视频.model’
def get_context_data(self, *args, **kwargs):
context = super(VideoDetail, self).get_context_data(*args,**kwargs)
context['Episodes'] = Episode.objects.all()
return contexthttps://stackoverflow.com/questions/62556423
复制相似问题