2011-10-27 87 views
2

我有MySQL數據庫:Django的輸出模板數據.select_related後()

ERR

在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') 

回答