在Django Admin的搜索字段中显示函数的名称

时间:2012-08-13 07:25:57

标签: django django-admin

我想在Django Admin界面的搜索字段中显示函数名称,但是当我这样做时

models.py:

class Adult(models.Model):    
    user = models.OneToOneField(User)
    firstname = models.CharField(max_length=100,
                                blank=True)
    lastname = models.CharField(max_length=100,
                                blank=True)
    def __unicode__(self):
        return self.user.username
    def Parent_Name(self):
      try:
        return '%s %s' % (adult.firstname,adult.lastname)
      except Exception:
        return ''
    getParentName.shot_description = 'adult'

Admin.py:

class AdultAdmin(admin.ModelAdmin):
    list_display = ('Parent_Name', 'Student_Name',)
    search_fields = ['Parent_Name',]

admin.site.register(Adult, AdultAdmin)

错误:     无法将关键字“Parent_Name”解析为字段。

写这个的正确方法应该是什么,以便函数名可以用于search_fields?

2 个答案:

答案 0 :(得分:1)

search_fields应为:

  

...设置为每当有人在该文本框中提交搜索查询时将搜索的字段名称列表。

您无法指定自己的搜索功能,因为它只接受指示您要搜索的字段的字符串列表(与您提到的{em> 接受函数 - 允许您以编程方式返回列表项的值)。

您可以在github上看到处理list_display的相应代码(及其限制)。你能做的最好就是遵循关系。

答案 1 :(得分:0)

如果其他人像我一样迷失了这个答案,那么被接受的答案将不再准确。您可以覆盖get_search_results函数以进行所需的搜索。

See the Django documentation on this function here.