Reputation:
i have tow model:
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',)
...
i want to show all comment that post_title
field's is equal to text of admin search box widget,but now displayed just one(Whereas there are exist many item)
Upvotes: 1
Views: 2388
Reputation: 734
you are should overwriteget_search_results
method in your ModelAdmin class as below:
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
Upvotes: 2
Reputation: 849
The search fields should be a list, not a tuple.
class Comment_Admin_Form(admin.ModelAdmin):
model = Comment
search_fields = ['content','post_title__title']
Upvotes: 0