首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >django reversion和get_<field>_display

django reversion和get_<field>_display
EN

Stack Overflow用户
提问于 2016-04-11 15:24:58
回答 1查看 102关注 0票数 0

我有一个这样的模型:

代码语言:javascript
复制
USER_TYPES=(("pro","Professional"),("beg","Beginner"))
mdl_user(models.Model):
    name=models.CharField(max_length=128)
    utype=models.CharField(max_length=3,Choices=USER_TYPES)

我想使用django-reversion跟踪用户更改

使用默认示例显示更改

代码语言:javascript
复制
from reversion.helpers import generate_patch_html
generate_patch_html(old_version, new_version, "utype", cleanup="semantic")

返回

代码语言:javascript
复制
<span>pro<ins>beg</ins></span>

但是我想要这样的return Choices值:

代码语言:javascript
复制
<span>Professional<ins>Beginner</ins></span>
EN

回答 1

Stack Overflow用户

发布于 2016-04-19 01:46:35

我发现django版本没有这样的东西

我使用这个helper来显示选项。

代码语言:javascript
复制
def replace_choices_value(req_mdl, objs):
    listobj = []
    fields = req_mdl._meta.get_fields()
    if type(objs) != list:
        objs = [objs, ]

    for obj in objs:
        newobj = {}
        for field in fields:
            display_method = "get_%s_display" % field.name
            if hasattr(req_mdl, display_method):
                newobj[field.name] = dict(field.flatchoices).get(obj.field_dict[field.name])
            else:
                newobj[field.name] = obj.field_dict.get(field.name, "")
        listobj.append(newobj)
    return listobj
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36542333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档