Python Django 获取显示名称选择
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/15984130/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-18 21:31:15 来源:igfitidea点击:
Django get display name choices
提问by Soy Latam
I'm trying to find a solution to my problem.
我正在努力为我的问题找到解决方案。
models.py
模型.py
class Article(models.Model):
title = models.CharField(max_length=100)
slug = models.SlugField()
description = models.TextField()
def archive_quality(self):
return self.archive_set.order_by('-quality').distinct().values_list('quality', flat=True)
class Archive(models.Model):
CHOICES_QUALITY = (
('1', 'HD YB'),
('2', 'HD BJ'),
('3', 'HD POQD'),
('4', 'HD ANBC'),
)
article = models.ForeignKey(Article)
quality = models.CharField(max_length=100, choices=CHOICES_QUALITY)
arhives.html
档案.html
{% for article in articles %}
{{ article }}
{% for quality in article.archive_quality %}
{{ quality.get_quality_display }}#This is not working
{% endfor %}
{% endfor %}
UpdateThe function archive_quality is important, because it prevents recurrence in the template objects.
更新函数 archive_quality 很重要,因为它可以防止模板对象中的重复出现。
Example:
article:
My article one
Archive:
quality: 1111222333 >> without the function
quality: 123 >> with function
回答by catherine
Option #1:
选项1:
models.py
模型.py
CHOICES_QUALITY = (
('1', 'HD YB'),
('2', 'HD BJ'),
('3', 'HD POQD'),
('4', 'HD ANBC'),
)
class Article(models.Model):
title = models.CharField(max_length=100)
slug = models.SlugField()
description = models.TextField()
def archive_quality(self):
quality = self.archive_set.order_by('-quality').distinct().values_list(
'quality', flat=True)
lists = []
for q in quality:
for choice in CHOICES_QUALITY:
if choice[0] == q:
lists.append({'quality': choice[1]})
return lists
class Archive(models.Model):
article = models.ForeignKey(Article)
quality = models.CharField(max_length=100, choices=CHOICES_QUALITY)
template
模板
{% for article in articles %}
{% for item in article.archive_quality %}
{{ item.quality }},
{% endfor %}
{% endfor %}
Option #2:
选项#2:
archive_tag.py
存档标签.py
from django import template
from app_name.models import CHOICES_QUALITY
register = template.Library()
@register.filter
def quality(q):
for choice in CHOICES_QUALITY:
if choice[0] == q:
return choice[1]
return ''
template
模板
{% load archive_tag %}
{% for article in articles %}
{% for item in article.archive_quality %}
{{ item|quality }},
{% endfor %}
{% endfor %}

