我有一个模板navbar.html
,我在其中存储导航栏的模板,然后将其包含在index.html
中,这是基本模板。
views.py
class NaverDetailView(generic.DetailView):
model = Naver
naver = Naver.objects.order_by('-artist_name')[:10]
template_name = 'feature/detailgenrenaver.html'
context_object_name = 'naver'
detailnaver.html
<div id="wrapper1">
<iframe width="1024" height="500" src="{{ naver.videoid }}" frameborder="0" allowfullscreen></iframe>
</div>
navbar.html
{% for navloop in naver_set.all %}
<nav class="navbar" data-tap-toggle="false" role="navigation">
<div class="col_2 rightside">
<img src="img/rafa.jpg" width="120" height="83">
<p>image1</p>
<img src=naver.videoimage" width="120" height="83" >
<p>naver.artist_name</p>
</div>
</nav>
{% endfor %}
urls.py
urlpatterns = [
url(r'^$', views.rock_and_feat, name='rock_and_feat'),
url(r'^trending/(?P<pk>[0-9]+)/$', views.DetailView.as_view(), name='naver'),
]
index.html
<html>
<head>{% include "feature/navbar.html" %}</head>
<body></body>
</html>
我的问题是,当我在for
中使用navbar.html
循环时,会列出Naver
中的所有对象,但我希望能够单独引用这些对象id引用如naver.videoimage(id=1)
或类似的东西,没有for循环,因此它不会多次列出对象。
答案 0 :(得分:0)
您可以将对象选择过滤为仅包含视图中所需的项目。然后只将选定的项目传递到模板上。
假设我有一个名为get_by_pk的项目,其中包含一个名为by_pk的应用程序。这是by_pk模型的文件:
/get_by_pk/by_pk/models.py
from django.db import models
class Naver(models.Model):
value_to_reference = models.CharField(max_length=10,primary_key=True)
another_field = models.TextField(max_length=500)
然后在您的视图中,您可以选择一个子集 /get_by_pk/by_pk/views.py
from by_pk.models import Naver
#...whatever view you want
only_these = ['a', 'b', 'c']
filtered_objects = Naver.objects.filter(value_to_reference__in=only_these).values()
#pass filtered_objects to template
以下是有关查询模型的链接: https://docs.djangoproject.com/en/1.8/topics/db/queries/