2017-12-04 2 views
0

私はdjangoのテンプレート内の値を比較しようとしています。私は、それは{{run.pms_id}}表示されていない印刷をしていたときには興味深いものがあるif Djangoのテンプレート文の文

class Run(models.Model): 
    run_id = models.AutoField(primary_key=True) 
    run_name = models.CharField(unique=True, max_length=30) 
    pms_id = models.ForeignKey('ProcessManagementSystem', db_column = 'pms_id') 

def __unicode__(self): 
    return self.run_name 


class ProcessManagementSystem(models.Model): 
    pms_id = models.AutoField(primary_key=True) 
    pms_name = models.CharField(unique=True, max_length=30) 

def __unicode__(self): 
     return self.pms_name 

マイテンプレート

{% for run in all_runs %} 
     {{run.pms_id}} 
     {% if run.pms_id == "PMSName1" %} 
        {{run.pms_id}} 
     {% endif %} 
{% endfor %} 

:文が に動作しない場合は、ここに私のコード ModelクラスでありますID、それはpms_nameを表示しています(おそらく返さself.pms_nameのため)

私は比較の間、私は名前の代わりに名前の "PMSName1"と比較しようとしています。 どのような提案を比較するのですか?あなたはIDまたは名前を取得したいような何かを行うので、もし

おかげ

答えて

0

Pms_idはオブジェクトです:

{% if run.pms_id.pms_id == 1 %} or {% if run.pms_id.pms_name == "PMSName1" %} 
0

はジャンゴでのForeignKeyフィールドはあなたに簡単にIDを与えるものではありません。それはあなたに実際の関連オブジェクトを与えます。 _id形式は使用しないでください。Djangoは実際にフィールドの名前に_idを追加することで基底のデータベース列を作成します。だから、pms_id_idと呼ばれるdb列があります。

テンプレートでは、オブジェクトがIDまたは名前と同じではありません。最初の形式の利点は、それが関連するため、DB検索をトリガしないということである

{% if run.pms_id.pms_id == whatever %} 

{% if run.pms_id_id == whatever %} 

または関連するオブジェクトのIDにアクセス:あなたは直接IDフィールドにアクセスすることができますオブジェクト; 2番目の利点は、たとえばrun.pms_id.pms_nameなどを使用してフィールドのいずれかと比較できる点です。