列出django型号的显示名称

时间:2010-03-20 19:24:31

标签: django templates choicefield

我有一个对象:

POP_CULTURE_TYPES = (
    ('SG','Song'),
    ('MV', 'Movie'),
    ('GM', 'Game'),
    ('TV', 'TV'),
)

class Pop_Culture(models.Model):
      name = models.CharField(max_length=30, unique=True)
      type = models.CharField(max_length=2, choices = POP_CULTURE_TYPES, blank=True, null=True)

然后我有一个功能:

def choice_list(request, modelname, field_name):
     mdlnm = get.model('mdb', modelname.lower())
     mdlnm = mdlnm.objects.values_list(field_name, flat=True).distinct().order_by(field_name)
     return render_to_response("choice_list.html", {
           'model'  : modelname,
           'field'  : field_name,
           'field_list'  : mdlnm })

这给了我一个不同的列表,列出了render_to_response中传递的“field_list”变量中数据库中的所有“类型”条目。但我不想要一个显示的列表:

SG

MV

我想要一个显示以下内容的列表:

电影

如果我在模板

中,我可以在单个对象的基础上执行此操作
object.get_type_display

但是如何获取数据库中所有唯一“类型”条目的列表作为输出到模板的全名?

我希望这个问题得到清楚的描述。 。

2 个答案:

答案 0 :(得分:2)

在choice_list()的末尾怎么样?

def choice_list(request, modelname, field_name):
    # ...
    pct = dict(POP_CULTURE_TYPES)
    return [pct[key] for key in mdlnm]

或者在一行中没有dict()调用:

    return [pct[1] for pct in POP_CULTURE_TYPES if pct in mdlnm]

不是很漂亮,但它会有效,直到更好地运行。

答案 1 :(得分:1)

您可以使用:

OBJECT.get_FIELD_display()

示例:

content = Pop_Culture.objects.get(...)

ctype = content.get_type_display()

不需要解决方法:)