2010-07-20 81 views
0

我的模型之一有一个“状态”字段,它只能在代码中修改。它是一个从1到6的整数(尽管将来可能会改变)。在Django Admin Site中显示值的自定义标签

但是,在Admin站点中,我想为此数据显示一个标签。所以,我不想显示'5',而是想说'错误'。这意味着我可以轻松地过滤数据库中具有'错误'状态的对象,而且我的同事也不知道每个状态是什么意思,因为他们不参与编码,可以使用管理站点。

我不知道我是否以正确的方式解决这个问题,或者甚至有可能,但是我会很感激您能给予的任何帮助。我宁愿不改变状态的存储方式,因为它需要对系统某些部分进行大量的重写。事后看来,我认为这是一个不好的方法,但我认为这个领域不会像它那么重要。

+1

如果您使用的选择选项字段,标签显示自动:HTTP:// UR1 .ca/0s2xf – 2010-07-20 22:24:54

回答

4
+0

我忘记了'list_display'中列出的项目可以是模型中的函数以及字段。我现在添加了正确的显示。但是,似乎'list_filter'需要有一个字段,并且不能使用一个函数。 – danpalmer 2010-07-20 22:38:47

+0

我已经检查了文档,正如我怀疑的那样,它必须有字段并且只支持某些类型。不幸的是,搜索甚至不支持功能。 – danpalmer 2010-07-20 22:41:43

+0

这就是为什么你应该首先使用选择。你真的必须尝试。 (作为最后的手段,请参阅http://stackoverflow.com/questions/991926/custom-filter-in-django-admin) – 2010-07-20 22:53:26

0

您可以创建一个覆盖to_pythonget_prep_value存储在数据库中的整数,但使用的字符串值中Python中的自定义字段类型:

http://docs.djangoproject.com/en/dev/howto/custom-model-fields/#django.db.models.django.db.models.Field

+0

这看起来像是一种可能性,但它仍然意味着重写了许多知道数字的代码。理想情况下,我希望他们仍然是除了管理网站以外的任何数字。我认为这可能与为管理网站中的某些内容添加人工可读标签相似。 – danpalmer 2010-07-20 22:26:03

+0

处理魔法状态数字的代码味道很差。 – 2010-07-20 22:33:30

+0

但它更好,更清洁,更快,90%的时间代码。只是当你遇到这种情况时,它会变得烦人。我认为在Ruby中你有一些通常用于这类事情的符号。 – danpalmer 2010-07-20 22:46:59

相关问题