django admin autocomplete filter without foreign key

79 Views Asked by At

I have this model:

class Person(models.Model):
    first_name = models.CharField(max_length=50, null=True, blank=True)
    last_name = models.CharField(max_length=50, null=True, blank=True)
    age = models.PositiveIntegerField(null=True, blank=True)
    gender = models.CharField(choices=Gender.choices, null=True, blank=True)
    city = models.CharField(max_length=200, null=True, blank=True)

I need autocomplete filter for "city" field

https://github.com/farhan0581/django-admin-autocomplete-filter didnt do the job

1

There are 1 best solutions below

2
On

you can use django-autocomplete-light and istall it.

Create a custom widget for the city field:

from autocomplete_light.widgets import AutoCompleteWidget
class CityAutocompleteWidget(AutoCompleteWidget):
    def get_model_objects(self, query):
        return City.objects.filter(name__icontains=query)

Update your Person model to use the new widget:

class Person(models.Model):
    first_name = models.CharField(max_length=50, null=True, blank=True)
    last_name = models.CharField(max_length=50, null=True, blank=True)
    age = models.PositiveIntegerField(null=True, blank=True)
    gender = models.CharField(choices=Gender.choices, null=True, blank=True)
    city = models.CharField(max_length=200, null=True, blank=True, widget=CityAutocompleteWidget)