我正在使用段塞查询模型,并在HTML中呈现结果。代码无法呈现区域的实际名称,它只返回 to 。
模型
class Region(models.Model):
name = models.CharField(blank=False, unique=True)
def __str__(self):
return self.name
class Theme(models.Model):
name = models.CharField(blank=False, unique=True)
slug = models.SlugField(default="", null=False)
def __str__(self):
return self.name
class ETF(models.Model):
ticker = models.CharField(max_length=6, blank=False, db_index=True, unique=True)
full_name = models.CharField(max_length=200, blank=False)
# many to many
region = models.ManyToManyField(Region)
theme = models.ManyToManyField(Theme)
views.py
def theme_etf(request, slug): # render ETFs with theme filter
filtered_results = ETF.objects.filter(theme__slug=slug)
return render(request, "etf/list_etf.html", {
"ETFs": filtered_results
})
部分list_etf.html
{% for ETF in ETFs %}
<tr>
<td>{{ ETF.ticker }}</td>
<td>{{ ETF.full_name }}</td>
<td>{{ ETF.region.name }}</td> # What should I use in this line
</tr>
{% endfor %}
代码无法呈现区域的实际名称,它只是返回无结果。
None
我想要这样做:
Global
我有数据库里的信息。我已经在管理员那里查过了。
发布于 2021-08-11 14:23:12
如数据库设计所暗示的那样,ETF可以有多个区域吗?如果没有,我建议您改用ForeignKey
。
您正在访问“区域”字段,就像访问ForeignKey
一样。在数据库设计中,需要使用ManyToManyField
迭代保存在.all
中的对象。
{% for ETF in ETFs %}
<tr>
<td>{{ ETF.ticker }}</td>
<td>{{ ETF.full_name }}</td>
<td>{% for region in ETF.region.all %}{{ region.name }}{%endfor%}</td>
</tr>
{% endfor %}
发布于 2021-08-11 14:20:47
因为你们有多到多的关系,所以你不能简单地拥有单一的价值观。所以,你必须列出价值。
{% for ETF in ETFs %}
<tr>
<td>{{ ETF.ticker }}</td>
<td>{{ ETF.full_name }}</td>
<td>
<ol>
{% for region in ETF.region %}
<li>{{region.name}}</li>
{% endfor %}
</ol>
</td>
</tr>
{% endfor %}
https://stackoverflow.com/questions/68743608
复制相似问题