Search code examples
pythondjangodjango-admin

How to add custom search box in Django-admin?


I know this is gonna be a very basic question.

In Django, I have successfully created an admin panel. Now I want to add a custom search box in one of my field namely Photo field. But I don't know how to add custom search box in a django-admin panel. If I get some proper hints than I believe that I can do it.

Admin.py:

from django.contrib import admin

from photo.models import Photo


class PhotoAdmin(admin.ModelAdmin):
    list_display = ('name', 'approved', 'approved_time', 'uploaded_time', 'user')

models.py:

class Photo(models.Model):
    name = models.CharField(max_length=100)
    photo = models.ImageField(upload_to='photos', blank=False, null=True)
    approved = models.BooleanField(default=False)
    approved_time = models.DateTimeField(auto_now=True,null=True, blank=True)
    uploaded_time = models.DateTimeField()
    description = models.CharField(max_length=500, blank=False , null=True)
    keyword = models.CharField(max_length=500, blank=False, null=True)
    image_id = models.CharField(max_length=300, blank=True, null=True)
    Certified = models.BooleanField(default=False)
    approved_by = models.CharField(max_length=100)
    user = models.ForeignKey(User)
    total_download = models.IntegerField(default=0)
    watermarked_image = models.ImageField(upload_to='temp', blank=True, null=True)

I want to add a custom search box in this Photo field where image can be searched by it's ID. Now how can I add this search box in my above given model.


Solution

  • Use the search_fields attribute of the ModelAdmin:

    class PhotoAdmin(admin.ModelAdmin):
        ...
        search_fields = ['name', 'description', 'user__related_fieldname', 'keyword']