首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Django在查询后将许多属性呈现给多个属性,不显示任何属性。

Django在查询后将许多属性呈现给多个属性,不显示任何属性。
EN

Stack Overflow用户
提问于 2021-08-11 14:06:31
回答 2查看 61关注 0票数 0

我正在使用段塞查询模型,并在HTML中呈现结果。代码无法呈现区域的实际名称,它只返回 to

模型

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

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

代码语言:javascript
运行
复制
{% 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

  • ARKK,

  • Ticker,地名,区域

  • ARKF,方舟金融科技创新ETF,None

  • KEJI,方舟创新ETF,None

  • KEJI,环球X中国创新,None

我想要这样做:

Global

  • ARKK,

  • Ticker,地名,区域

  • ARKF,方舟金融科技创新ETF,Global

  • KEJI,方舟创新ETF,Global

  • KEJI,环球X中国创新,China

我有数据库里的信息。我已经在管理员那里查过了。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-08-11 14:23:12

如数据库设计所暗示的那样,ETF可以有多个区域吗?如果没有,我建议您改用ForeignKey

您正在访问“区域”字段,就像访问ForeignKey一样。在数据库设计中,需要使用ManyToManyField迭代保存在.all中的对象。

代码语言:javascript
运行
复制
{% 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 %}
票数 2
EN

Stack Overflow用户

发布于 2021-08-11 14:20:47

因为你们有多到多的关系,所以你不能简单地拥有单一的价值观。所以,你必须列出价值。

代码语言:javascript
运行
复制
{% 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 %}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68743608

复制
相关文章

相似问题

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