2
我有MySQL數據庫:Django的輸出模板數據.select_related後()
在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')