我正在尝试使用模型中的属性作为 django admin (1.2) 中的字段。
这是我的代码的示例:
class Case(models.Model):
reference = models.CharField(_(u'Reference'), max_length=70)
client_read = models.BooleanField(default=0)
def __unicode__(self):
return self.case_id
@property
def case_id(self):
""" unique case ID """
number = (settings.CASE_ID_LENGTH - len(str(self.id))) * "0" + str(self.id)
return '%(year)s%(unique_id)s' % {
'year': self.case_date.strftime("%y"),
'month': self.case_date.strftime("%m"),
'unique_id': number}
以及 admin.py 的部分:
class OrderAdmin(ReadOnlyAdminFields, admin.ModelAdmin):
[...]
search_fields = ('id','case','req_surname','req_forename','req_company')
我可以将该字段称为“case”(如示例中所示),但这给了我一个类型错误:相关字段查找无效:icontains
当然,它以相关领域的方式工作:所以我可以使用case__id然后我就可以使用 id 作为搜索查询。
但这对用户来说有点恼火,因为 caseid 显示不同。
有没有办法像显示的那样使用 case_id 作为搜索查询(年+月+id)?
不,您不能以这种方式使用它,因为这只适用于表示数据库中的列的属性,而不适用于属性。实现这项工作的唯一方法是使用contrib.admin.views.main.ChangeList
更改列表并覆盖它get_query_set
方法来实现所需的行为!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)