【问题标题】:How to display parent table columns in django template如何在 Django 模板中显示父表列
【发布时间】:2016-08-27 11:21:34
【问题描述】:

我在 django 中有两个模型如下:

class Directorates(models.Model):
  entrydate = models.DateTimeField(auto_now=True)
  directoratename = models.CharField("Directorate", max_length=1000)
  note = models.CharField("Note", max_length=2000, null=True)
  insertedby = models.IntegerField(null=False)
  updatedby = models.IntegerField(null=False, default='0')
  deletedby = models.IntegerField(null=False, default='0')

  def __str__(self):
    return self.directoratename


class Departments(models.Model):
  entrydate = models.DateTimeField(auto_now=True)
  departmentname = models.CharField("Department", max_length=1000)
  note = models.CharField("Note", max_length=2000, null=True)
  directorate = models.ForeignKey(Directorates, on_delete=models.CASCADE)
  insertedby = models.IntegerField(null=False)
  updatedby = models.IntegerField(null=False, default='0')
  deletedby = models.IntegerField(null=False, default='0')

  def __str__(self):
    return self.departmentname

我要做的是在模板中的表格中显示 id、departmentname、Departments 模型中的 note 和 Directorates 模型中的 directoratename。

以下是我的查询,需要对其进行编辑以满足要求。

 Departments.objects.filter(deletedby=0).values("id", "departmentname", "note", "directorate_id").order_by('-id')[:5]

下面是表格填充的代码。

{% for d in data %}
  <tr>
    <td>{{ d.departmentname }}</td>
    <td>directoratename to be displayed here.....</td>
    <td>{{ d.note }}</td>
    <td class="pull-right">
      <form action="{% url 'app:departments-delete' d.id %}" method="post">
        {% csrf_token %}
        <div class="btn-group" role="group" aria-label="...">
          <a href="{% url 'app:departments-edit' d.id %}" class="btn btn-warning glyphicon glyphicon-pencil"></a>
          <button type="submit" class="btn btn-danger glyphicon glyphicon-trash"></button>
        </div>
      </form>
    </td>
  </tr>
{% endfor %}

我搜索了谷歌以找到解决方案,但是我找不到任何解决方案。请帮帮我。

【问题讨论】:

    标签: python django django-models django-forms django-templates


    【解决方案1】:

    您使用values() 查询让事情变得更加困难。只需传递对象本身:

    departments = Departments.objects.filter(deletedby=0)
    

    现在你可以这样做了:

    {% for d in data %}
      <tr>
        <td>{{ d.departmentname }}</td>
        <td>{{ d.directorate.directoratename }}</td>
    

    请注意,您可以通过在原始查询中使用 select_related 来提高效率:

    departments = Departments.objects.filter(deletedby=0).select_related('directorate')
    

    还要注意,在 Django 中,给模型提供单数名称是正常的 - 部门、部门 - 因为一个实例指的是一个单一的。

    【讨论】:

      猜你喜欢
      • 2021-11-02
      • 1970-01-01
      • 2021-07-25
      • 1970-01-01
      • 2019-05-28
      • 1970-01-01
      • 2020-12-23
      • 1970-01-01
      • 2017-11-13
      相关资源
      最近更新 更多