首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在模板中显示相关对象以获取详细视图的问题

问在模板中显示相关对象以获取详细视图的问题
EN

Stack Overflow用户
提问于 2020-06-24 13:37:24
回答 2查看 372关注 0票数 1

我希望在单个episode.object }页面中呈现每个{{ video.object },其中它对{video.object}很好。但它没有显示任何情节对象..。我想要呈现的最后一个模板video.html可以在这里看到我尝试过的https://ibb.co/K9NMXtS

代码语言:javascript
复制
{% for episode in episodes %}
  {{ episode.title }}
{% endfor %}

但那不起作用。以下是其他配置:-

代码语言:javascript
复制
#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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-06-25 13:47:42

Python和Django模板区分大小写。在视图中使用Episodes,这与模板中的episodes不匹配。更改其中一个以使其匹配(episodes /Django中的模型实例推荐使用)。

接下来,您正在使用Episode.objects.all(),它将显示所有的插曲。如果您只想要该视频的情节,那么过滤查询集:

代码语言:javascript
复制
context['episodes'] = Episode.objects.filter(video=self.object)

或者,也可以通过向后执行外键获得相同的结果:

代码语言:javascript
复制
context['episodes'] = self.object.episodes.all()
票数 0
EN

Stack Overflow用户

发布于 2020-06-24 14:01:33

在超级标签中添加VideoDetail,在调用模板{{ episode.video.slug }}时添加self,并在url中添加足够的片段

代码语言:javascript
复制
path('video/<slug>/', views.VideoDetail.as_view(), name='videos'),

类VideoDetail(DetailView):model = Episode template_name =‘视频/视频.model’

代码语言:javascript
复制
def get_context_data(self, *args, **kwargs):
   context = super(VideoDetail, self).get_context_data(*args,**kwargs)
   context['Episodes'] = Episode.objects.all()
   return context
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62556423

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档