How to add custom search box in Django-admin?

PythonDjangoDjango Admin

Python Problem Overview


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.

Python Solutions


Solution 1 - Python

Use the search_fields attribute of the ModelAdmin:

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

Solution 2 - Python

cant reply due to low karma..

but don't forget to register the Admin Model too, like

admin.py

from django.contrib import admin
from .models import *

admin.site.register(Photo, PhotoAdmin)

Solution 3 - Python

When you write:

admin.site.register([Photo, PhotoAdmin])

you register in admin two models: Photo and PhotoAdmin, you must register Model and ModelAdmin for it, like this:

admin.site.register(Photo, PhotoAdmin) 

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionMd. Tanvir RaihanView Question on Stackoverflow
Solution 1 - PythoncatavaranView Answer on Stackoverflow
Solution 2 - PythonDan WaltersView Answer on Stackoverflow
Solution 3 - PythonAkhil SView Answer on Stackoverflow