如何在Django admin.ModelAdmin中为自定义search_fields添加方法

时间:2015-06-08 18:12:04

标签: python django django-models django-admin modeladmin

我正在尝试将搜索选项添加到我的django管理页面。请查看下面的代码。

class ApplicationAdmin(admin.ModelAdmin):

def get_name(self, obj):
    return obj.user.first_name + ' ' + obj.user.last_name
list_display = ('get_name', ... ... )
#search_fields = ['first_name', 'last_name'
search_fields = ['get_name']

此实现返回FieldError,因为search_fields属性似乎无法将方法“get_name”作为元素。

有没有办法让search_fields将'get_name'方法作为元素?

1 个答案:

答案 0 :(得分:0)

Django无法搜索您已发现的属性。但是,您只需将first_namelast_name字段添加到search_fields即可,它将按预期工作。

如果您需要对整个名称值进行精确匹配,我的建议是添加一个非规范化字段,可能称为full_name,通过post_save信号保持同步。