To get Grappelli’s autocomplete to work you need to implement the autocomplete_search_fields() for the model you would like to refer. To refer to the built in django.contrib.auth.models.User, you need to create a proxy class like this:
class MyUser(User):
"""Proxy class for User to be able to implement autocomplete_search_fields for Grappelli"""
@staticmethod
def autocomplete_search_fields():
return ("id__iexact", "username__icontains",)
class Meta:
proxy = True
class MyModel(models.Model):
myusers = models.ManyToManyField(MyUser)
class MyModelAdmin(admin.ModelAdmin):
raw_id_fields = ('myusers')
autocomplete_lookup_fields = {
'm2m': ['myusers'],
}
admin.site.register(MyUser) # Important - don't forget this!
admin.site.register(MyModelAdmin)
The documentation is a bit unclear here, but in autocomplete_lookup_fields you should always use ‘m2m’ for many-to-many fields, and ‘fk’ for foreign keys.
