如何在Django模板中的if语句标签中使用查询结果
How to use query result in if statement tag in Django template
是否可以在if语句模板标签中使用查询结果
category.html(模板):
{% for ETF in ETFs %}
<td>{{ ETF.ticker }}</td>
<td>{{ ETF.full_name }}
{% if ETF.asset_class == "Inverse" %} <! –– this don't work ––>
<span class="alert-warning" > Inverse </span>
{% endif %} </td>
{% endfor %}
views.py
def etf_list(request):
filtered_results = ETF.objects.all()
return render(request, "etf/category.html", {
"ETFs": filtered_results,
})
它在这里不起作用,因为 ETF.asset_class 不是字符串对象。所以它不能等于另一个字符串。还有其他方法可以让它发挥作用吗?我在 html 中有 table 个项目,我想突出显示一些具有某些模型属性的项目。
models.py
class ETF(models.Model):
ticker = models.CharField(max_length=6, blank=False, db_index=True, unique=True, primary_key=True)
asset_class = models.ForeignKey(Asset_class, on_delete=models.PROTECT, blank=True)
class Asset_class_style(models.Model):
name = models.CharField(max_length=50, blank=False, unique=True)
details = models.CharField(max_length=500, blank=True)
slug = models.SlugField(default="", null=False, blank=True)
class Meta:
ordering = ["name"]
def __str__(self):
return self.name
def save(self, *args, **kwargs):
self.slug = slugify(self.name)
super().save(*args, **kwargs)
不能将asset_class与字符串进行比较,但可以将name属性与字符串进行比较。所以:
{% for ETF in ETFs %}
<td>{{ ETF.ticker }}</td>
<td>{{ ETF.full_name }}
{% if ETF.asset_class.name == "Inverse" %} <! –– name attribute of assest_class ––>
<span class="alert-warning" > Inverse </span>
{% endif %} </td>
{% endfor %}
是否可以在if语句模板标签中使用查询结果
category.html(模板):
{% for ETF in ETFs %}
<td>{{ ETF.ticker }}</td>
<td>{{ ETF.full_name }}
{% if ETF.asset_class == "Inverse" %} <! –– this don't work ––>
<span class="alert-warning" > Inverse </span>
{% endif %} </td>
{% endfor %}
views.py
def etf_list(request):
filtered_results = ETF.objects.all()
return render(request, "etf/category.html", {
"ETFs": filtered_results,
})
它在这里不起作用,因为 ETF.asset_class 不是字符串对象。所以它不能等于另一个字符串。还有其他方法可以让它发挥作用吗?我在 html 中有 table 个项目,我想突出显示一些具有某些模型属性的项目。
models.py
class ETF(models.Model):
ticker = models.CharField(max_length=6, blank=False, db_index=True, unique=True, primary_key=True)
asset_class = models.ForeignKey(Asset_class, on_delete=models.PROTECT, blank=True)
class Asset_class_style(models.Model):
name = models.CharField(max_length=50, blank=False, unique=True)
details = models.CharField(max_length=500, blank=True)
slug = models.SlugField(default="", null=False, blank=True)
class Meta:
ordering = ["name"]
def __str__(self):
return self.name
def save(self, *args, **kwargs):
self.slug = slugify(self.name)
super().save(*args, **kwargs)
不能将asset_class与字符串进行比较,但可以将name属性与字符串进行比较。所以:
{% for ETF in ETFs %}
<td>{{ ETF.ticker }}</td>
<td>{{ ETF.full_name }}
{% if ETF.asset_class.name == "Inverse" %} <! –– name attribute of assest_class ––>
<span class="alert-warning" > Inverse </span>
{% endif %} </td>
{% endfor %}