【问题标题】:Django outputting data in templates after .select_related()Django 在 .select_related() 之后在模板中输出数据
【发布时间】:2011-12-16 07:55:10
【问题描述】:

我有 MySQL 数据库:

在 Django 模型中:

class Record(models.Model):
    schema_id  = models.IntegerField()
    project_id = models.IntegerField()
    name       = models.CharField(max_length=50)

class Value(models.Model):
    record    = models.ForeignKey(Record)
    key       = models.ForeignKey(Key)
    value     = models.CharField(max_length=255)

class Key(models.Model):
    name   = models.CharField(max_length=50)
    encode = models.BooleanField(default=False, blank=True)

在输出中应该是这样的:

## record.name ##
    key.name - value.value 
    key.name - value.value  
    ...

## record.name ##
    key.name - value.value 
    key.name - value.value 
    ...

我尝试使用以下代码进行操作,但它对数据库进行了太多查询。

#in view
records = Record.objects.filter(project_id=1)

#in template
{% for record in records %}
    <table>
        <tr>
            <td class="legend">Record:</td>
            <td>{{ record.name }}</td>
        </tr>

        {% for value in record.value_set.all %}
            <tr>
                <td class="legend">{{ value.key.name }}:</td>
                <td>{{ value.value }}</td>
            </tr>
        {% endfor %}
    </table>
{% endfor %}

使用 .select_related() 我在 2 个查询中获取所有数据,但是如何在模板中迭代这些数据以获得相似的结构?

records = Record.objects.filter(project_id=1)
values = Value.objects.filter(record__in=records).select_related().order_by('record')

【问题讨论】:

    标签: django django-models django-templates django-views


    【解决方案1】:

    {% regroup %} 标签做得很好。

    【讨论】:

      猜你喜欢
      • 2013-10-31
      • 2014-02-04
      • 2011-10-01
      • 2016-07-02
      • 2016-05-13
      • 2017-05-25
      • 2016-03-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多