2011-10-27 21 views
2

私は、MySQL DB持っている:Djangoのモデルでジャンゴ()

ERR

:それをすべき出力で

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 
    ... 

次のコードを使用して試してみますが、データベースへのクエリが多すぎます。

.select_relatedを使用して
#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 %} 

()私は2クエリ内のすべてのデータを取得するが、どのように類似した構造を得るために、テンプレートでこのデータを反復処理しますか?

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

答えて