簡體   English   中英

比較 django 模板中 model 的選擇字段

[英]Comparing choice field from model in django template

模型.py

class Skill(models.Model):

    title_choice = [
        ('LANGUAGE', 'Language'),
        ('FRAMEWORK', 'Framework')
    ]
    title = models.CharField(max_length=15, choices=title_choice,
                             default='LANGUAGE')
    name = models.CharField(max_length=50)

模板(與標題比較時)是

<h2 class="mb-5">Skills</h2>
            {% for item in Skill %}
                {% if item.title == "LANGUAGE" %}
                    <h3 class="mb-0">Programming Languages</h3>
                    <ul class="subheading mb-3">
                        <li class="list-inline-item">{{ item.name }}</li>
                    </ul>
                {% elif item.title == "FRAMEWORK" %}
                    <div class="subheading mb-3">Frameworks</div>
                    <ul class="list-inline dev-icons">
                        <li class="list-inline-item">{{ item.name }}</li>
                    </ul>

                {% endif %}
            {% endfor %}

OUTPUT: output 當我與標題比較時

當我嘗試比較 model 中的標題時,它沒有顯示任何數據但是當我將“名稱”與數據庫值進行比較時,它顯示正確的 output。 模板(當我與名稱比較時)

<h2 class="mb-5">Skills</h2>
            {% for item in Skill %}
                {% if item.name == "Python" %}
                    <h3 class="mb-0">Programming Languages</h3>
                    <ul class="subheading mb-3">
                        <li class="list-inline-item">{{ item.name }}</li>
                    </ul>
                {% elif item.name == "React" %}
                    <h3 class="mb-0">Frameworks</h3>
                    <ul class="subheading mb-3">
                        <li class="list-inline-item">{{ item.name }}</li>
                    </ul>

                {% endif %}
            {% endfor %}

OUTPUT:當我與名稱比較時

我想將值與標題進行比較並顯示結果

在您的模板中,您希望能夠將 Charfield 與 class / 實例中的 CONSTANT 進行比較。 為此,您必須修改您的代碼,如下所示:

class Skill(models.Model):
    LANGUAGE = 'L'
    FRAMEWORK = 'F'

    title_choice = [
        (LANGUAGE, 'Language'),
        (FRAMEWORK, 'Framework')
    ]
    title = models.CharField(max_length=15, choices=title_choice,
                         default='LANGUAGE')
    name = models.CharField(max_length=50)

您針對 CONSTANT 定義的值將存儲在數據庫中,即語言的“L”。

元組中的第二個值是當您調用get_title_display() function 時 django 將返回的值。

在您的模板中,您現在可以執行以下操作:

{% if item.title == item.LANGUAGE %}

與選擇進行比較。

https://docs.djangoproject.com/en/3.1/ref/models/fields/#choices

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM