我只是不明白。不知怎的,django不想渲染两个变量brand_company和brand_concern,即使django之前做过2行。
这是我在views.py中的定义:
def BrandDetails(request, brand_id):
brand = Brands.objects.get(id=brand_id)
brand_name = brand.name
brand_pic = brand.img
brand_concern = Concerns.objects.get(id=brand.concern_id).name
brand_company = Companies.objects.filter(id=brand.company_id)
brand_fair = brand.fair
brand_eco = brand.eco
context = {
"brand_id": brand.id,
"brand_name": brand.name,
"brand_pic": brand.img,
"brand_company": brand_company,
"brand_concern": brand_concern,
"brand_fair": brand_fair,
"brand_eco": brand_eco,
}
return render_to_response("database/details.html", context)
这是我的html-snipped:
{% extends "database/index.html" %}
{% block details %}
<div id="DetailsContent">
<img src="{{brand_pic}}"></img><br>
Markenname: {{ brand_name }}<br>
Unternehmen: {{ brand_company }}<br>
Konzern: {{ brand_concern }}<br>
Fair: {% if brand_fair > 0 %}Ja{% endif %}Nein<br>
Öklogisch: {% if brand_eco > 0 %}Ja{% endif %}Nein<br>
<h3><a href="http://localhost:8000/database/"> Neue Suche? Einfach hier klicken </a></h3>
</div>
{% endblock %}
结果如下:
我在manage.py shell中测试了该查询,并且它在那里工作得很好。您还可以看到brand.name和brand.img,以及brand.fair和brand.eco(即使if语句不起作用,但这是另一个问题,但是显示)。
也许模型也有帮助,这是品牌的模型:
class Brands(models.Model):
name = models.CharField(max_length=50, null=True)
altName = models.CharField(max_length=50, null=True)
fair = models.IntegerField()
eco = models.IntegerField()
concern = models.ForeignKey("Concerns", null=True)
company = models.ForeignKey("Companies", null=True)
url = models.CharField(max_length=50, null=True)
img = models.CharField(max_length=50, null=True)
class Meta:
db_table = "Brands"
def __str__(self):
return self.name
也许是因为公司和关注领域是ForeignKeys,但这很奇怪。
提前致谢!
答案 0 :(得分:0)
brand_company未在模板中显示的原因是,
brand_company = Companies.objects.filter(id=brand.company.pk)
brand_company
是一个查询集。
所以你需要在你的模板中这样做,
Unternehmen: {% for company in brand_company %} {{ company }}{% endfor %}<br>
另外,更改此行,
brand_concern = Concerns.objects.get(id=brand.concern.pk).name
为什么你的if语句不起作用:
因为,你在else语句之前结束了if语句。
应该是这样的,
{% if brand_eco > 0 %}Ja{% else %}Nein{% endif %}<br>