从django中的外键获取数据

Get Data from foreign key in django

我在 Sqlite 中创建了两个表,一个有主要经验数据,另一个有数据的详细信息 as

class experience(models.Model):
  e_name = models.CharField(max_length=30)
  e_post = models.CharField(max_length=50)
  e_startdate = models.CharField(max_length=30)
  e_enddate = models.CharField(max_length=30)

def __str__(self):
    return self.e_name

class experiencedetail(models.Model):
  e_name = models.ForeignKey(experience,on_delete=models.DO_NOTHING)
  e_detail = models.CharField(max_length=100)

我正在尝试将细节描述为 shown in this image

我的Html代码是

    {% for exp in experience %}
    <div id="{{exp.e_name}}" class="tabcontent">
            <h2 class="hf">{{exp.e_post}} @ <span>{{ exp.e_name }}</span></h2>
            <p>{{exp.e_startdate}} - {{exp.e_enddate}}- {{exp.id}}</p>
            <div class="exp-description">
                <h4>
                    <ul style="list-style: square;">
                        {% for expd in exp_detail %}
                            {% if 'expd.e_name' == 'exp.e_name' %}
                                <li>{{ expd.e_detail }}</li>
                            {% endif %}
                        {% endfor %}
                    </ul>
                </h4>
            </div>
        </div>
    {% endfor %}

但是这个expd.details没有显示任何数据。数据存在于数据库中。

那是因为exp_detail不存在。您通过以下方式访问反向 ForeignKey 管理器:

{% for expd in <b>exp.experiencedetail_set.all</b> %}
    <li>{{ expd.e_detail }}</li>
{% endfor %}

反向经理的名称是 related_name=… parameter [Django-doc] 的值。如果您没有在 ForeignKey 中指定此参数,它将使用 <i>modelname</i>_set.


Note: Models in Django are written in PerlCase, not snake_case, so you might want to rename the model from experiencedetail to ExperienceDetail.