我有一个对象:
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
但是如何获取数据库中所有唯一“类型”条目的列表作为输出到模板的全名?
我希望这个问题得到清楚的描述。 。
答案 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()
不需要解决方法:)