2016-08-25 6 views
2

他のテーブルのフィールドをDjango 1.10でテンプレートに表示することはできますか?他のテーブルのフィールドをDjango 1.10でテンプレートに表示できますか?

私は、次のmodels.py

import datetime 

from django.db import models 
from django.forms import ModelForm 
from django.utils import timezone 
from django.utils.encoding import python_2_unicode_compatible 

@python_2_unicode_compatible 
class Group(models.Model): 
    group_name = models.CharField(max_length=255) 
    no_of_monk = models.IntegerField() 
    def __str__(self): 
     return self.group_name 
    class Meta: 
     ordering = ['id'] 

@python_2_unicode_compatible 
class Tbl_Province(models.Model): 
     province_code = models.CharField(max_length=2) 
     province_name = models.CharField(max_length=150) 
     geo_id = models.IntegerField() 
     def __str__(self): 
       return self.province_name 

@python_2_unicode_compatible 
class Contact(models.Model): 
    group = models.ForeignKey(Group, on_delete=models.CASCADE) 
    order = models.IntegerField() 
    name = models.CharField(max_length=255, db_index=True) 
    description = models.TextField(blank=True) 
    amount = models.DecimalField(max_digits=10, decimal_places=2) 
    confirm = models.BooleanField(default=False) 
    created = models.DateTimeField(auto_now_add=True) 
    updated = models.DateTimeField(auto_now=True) 
    province = models.ForeignKey(Tbl_Province, on_delete=models.CASCADE) 
    def __str__(self): 
     return self.name 
    class Meta: 
     ordering = ['order', 'province'] 

として3つのテーブルを持っていると私はどこ次のテンプレートのid = contact.id tbl_province.province_nameを表示したいと思い、それは可能ですか?しかし

{% for contact in group.contact_set.all %} 
     <tr> 
     <td width="10%" class="table-text"><div><strong>{{ forloop.counter0|mod:5|add:1 }}</strong></div></td> 
     <td width="10%" class="table-text"><div>{{ forloop.counter }}</div></td> 
     <td width="10%" class="table-text"><div>{{ contact.order }}</div></td> 
     <td class="table-text"><div>{{ contact.name }}</div></td> 
     {% if contact.province_id %} 
      <td class="table-text"><div>{{ **Want to display tbl_province.province_name where id=contact.id here** }}</div></td> 
     {% endif %} 
     <td width="13%" class="table-text"><div><input type="text" name="ord" id="con-ord" class="form-control" value="{{ contact.amount|intcomma }}"></div></td> 
     <td width="10%" class="table-text"><div>บาท</div></td> 
     <td> 
      <form action="{% url 'contribution:contactdel' contact.id %}" method="POST"> 
      {% csrf_token %} 
      <button type="submit" id="delete-group" class="btn btn-danger"> 
      <i class="fa fa-btn fa-trash"></i> Delete 
      </button> 
      </form> 
     </td> 
    </tr> 
{% endfor %} 
+0

私はあなたのビューでid = contact.idのtbl_province.province_nameを取得するために実際のクエリを行い、レンダリング時にその変数をテンプレートに渡します。 – elethan

答えて

0

テンプレートは、データベースへのアクセス権を持っていないので、彼らがクエリを実行することはできません(それはあなたが望むものを基本的にです)

、私はあなたが外部キーを持っていることがわかりますContactTbl_Province、あなたが代わりにすることを使用することができます - (私はあなたが達成しようとしているものを正しく理解していれば)ちょうどあなたがより多くのエキゾチックなものが必要な場合は、ビュー関数内でクエリを実行する必要があります

{% contact.province.province_name %}を書き、それをテンプレートコンテキストに渡します。

+0

ありがとう、Dunno、それは仕事です!!!! – Maicmi

+0

@Maicmi問題はありません。テンプレートはレンダリング専用に使用されることを覚えておいてください。つまり、内部でデータを操作することはできません。すべてのデータベース関連のロジックはviews.pyとmodels.pyで行い、結果をコンテキストとしてテンプレートに渡す必要があります – Dunno

関連する問題