有没有办法将模型的__unicode__方法包含到search_fields元组中?我不想在模型中创建特殊字段来存储__unicode__的结果,因为这个值取决于其他几个模型......
问问题
1005 次
2 回答
2
不,不可能,因为search_fields
tuple中提到的字段是用来构造sql查询的
看https://github.com/django/django/blob/master/django/contrib/admin/views/main.py第349-370行
UPD。__unicode__
好吧,您可以创建另一个字段并在那里存储方法的值。可能它看起来丑陋且效率低下,但这允许您过滤数据库列。给我更多信息__unicode__
方法的外观。
UPD2您的unicode
方法:
def __unicode__(self):
return "%s%s%s%s-%s%s" % (
self.factory.republic.code.upper(),
self.factory.location.region and self.factory.location.region.code or '00',
self.factory.location.code,
self.factory.code,
self.kind.code,
self.code
)
Djangosearch_fields
操作他的 ORM 方法,因此如果您无法执行
Catalog.objects.filter(**lookup_queries)
,您将无法search_fields
在管理员中执行此操作。很遗憾。
您unicode
的方法非常具体,包含 6 个表和其他程序逻辑的连接。在 SQL 语言中搜索该字段会很复杂,并且不会使用索引。尝试将结果保存在 db 列中,并在相关字段也更新时进行更新。
于 2012-04-15T12:53:21.520 回答