[英]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.