2017-04-27 7 views
0

誰かが私が間違って言ったことができますか?オブジェクトが空の場合のテンプレート表示ボタンの仕組みは?

私は2つのモデルがあります:プロジェクトと目的。

class Purpose(models.Model): 
    code = models.UUIDField(_('Code'), primary_key=True, default=uuid.uuid4, editable=False) 
    project = models.ForeignKey(Project, on_delete=models.CASCADE) 
    text = models.TextField(_('Text')) 
    comments = models.ManyToManyField("Comment") 

すべてのプロジェクトには1つの目的しかありません。したがって​​ページでは、そのプロジェクトに他の目的オブジェクトがない場合にのみpurpose_addボタンを表示したいと思います。 project_codeと同じ目的のオブジェクトがないとき、なぜ私はボタンを表示しませんか?

views.py:

def project_detail(request, project_code): 
*** 
purpose_is_not_exist = Purpose.objects.exclude(project=project_code).exists() 
*** 

project_detail.html:

{% if purpose_is_not_exist %} 
    <button id="purpose-add-button"></button> 
{% endif %} 

答えて

1
{% if not purpose_is_not_exist %} 

あなたがFalseのブール値を否定すべきです。

1

混乱は、変数名purpose_is_not_existによって引き起こされます。

Purpose.objects.exclude(project=project_code).exists() 

上記の文は、Purposeオブジェクトが存在するかどうかを返します。混同を避けるため、変数の名前をpurpose_existsに変更してください。

そして、あなたはそれが変数を否定その後、存在しない場合は、ボタンを追加するテンプレートで:また

{% if not purpose_exists %} 

、あなたは変数の元の名前を使用して維持したい場合は、ビュー自体を否定するだけです。

purpose_is_not_exist = not Purpose.objects.exclude(project=project_code).exists() 
関連する問題