1

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

模型.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'

管理员.py:

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

admin.site.register(Adult, AdultAdmin)

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

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

4

2 回答 2

2

万一其他人像我一样偶然发现了这个答案,则接受的答案不再准确。您可以覆盖该get_search_results功能以根据需要进行搜索。

在此处查看有关此功能的 Django 文档。

于 2019-11-04T16:53:33.717 回答
1

search_fields应该是:

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

您不能指定自己的搜索功能,因为它只接受指示要搜索的字段的字符串列表(与list_display您提到的接受功能的选项不同- 允许您以编程方式返回列表项的值) .

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

于 2012-08-13T08:53:26.897 回答