【发布时间】: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