有没有办法将模型的 __ unicode __ 方法包含在 search_fields 元组中?我不想在模型中创建用于存储 __ unicode __ 结果的特殊字段,因为这个值取决于其他几个模型......
答案 0 :(得分:2)
不,这是不可能的,因为search_fields
元组中提到的字段用于构造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
)
Django search_fields
操作他的ORM方法,如果你不能执行
Catalog.objects.filter(**lookup_queries)
,您无法在管理员中使用search_fields
执行此操作。不幸的是
对于6个表和其他程序逻辑的连接,您unicode
方法非常具体。在SQL语言中搜索此字段会很复杂,并且不会使用索引。尝试将结果保存在db列中,并在相关字段更新时进行更新。
答案 1 :(得分:1)
嘿,我最近确实需要类似的东西。
正如this answer search_fields
中所述,仅适用于表示数据库中列的属性,而不适用于属性。
但是,如果您的__unicode__
函数取决于其他几个模型中的[字段] ,请查看
this other answer解释了如何在管理search_fields中指定related field searches,就像在Django查询集上一样。