Django管理员:自定义搜索
我有两个模型:Django管理员:自定义搜索,django,admin,Django,Admin,我有两个模型: class Site_Posts(models.Model): title = models.CharField(max_length=300,default='') ... def __unicode__(self): return self.title class Comment(models.Model): post_title = models.ForeignKey(Site_Posts,null=True) po
class Site_Posts(models.Model):
title = models.CharField(max_length=300,default='')
...
def __unicode__(self):
return self.title
class Comment(models.Model):
post_title = models.ForeignKey(Site_Posts,null=True)
post_id = models.IntegerField(null=True,default=None)
...
class Comment_Admin_Form(admin.ModelAdmin):
model = Comment
search_fields = ('content','post_title__title',)
...
我想显示所有注释,说明
post_title
字段等于管理员搜索框小部件的文本,但现在只显示一个(尽管存在许多项)搜索字段应该是列表,而不是元组
class Comment_Admin_Form(admin.ModelAdmin):
model = Comment
search_fields = ['content','post_title__title']
您应该覆盖ModelAdmin类中的
get\u search\u results
方法,如下所示:
class X_Admin_Form(admin.ModelAdmin):
def get_search_results(self, request, queryset, search_term): # for customize search_list
queryset,use_distinct = super(X_Admin_Form, self).get_search_results(request,queryset,search_term)
try:
b = Site_Posts.objects.filter(title__icontains=search_term)
ll = []
for item in b:
ll.append(item.id)
condition = Q(post_id__in=ll) | Q(another_field=search_term)
queryset |= self.model.objects.filter(condition)
except:
pass
return queryset, use_distinct
没有区别(列表或元组)我的问题仍然存在,上面的代码应该可以工作。您是否记得在
admin.site.register(Comment,Comment\u admin\u表单)
中注册您的模型管理员?你在找什么?如果在shell中搜索Comment.objects.filter(post\u title\u title='')
,会得到什么结果?这与在管理中得到的结果相同吗?是的,我注册了模型管理员,我的代码工作正常,但显示了一个项目而不是存在的多个项目