Search code examples
pythonpython-3.xdjangoforeign-keysdjango-admin

django admin sort foreign key field list


Is there an option in the django admin view for ordering of foreign key fields? i.e. I have a foreign key to a "School" model, which shows as a dropdown, sorted on pk-- I would like it to be sorted alphabetically.


Solution

  • ModelAdmin specific ordering via formfield_for_foreignkey:

    class MyModelAdmin(admin.ModelAdmin):
        def formfield_for_foreignkey(self, db_field, request, **kwargs):
            if db_field.name == "school":
                kwargs["queryset"] = School.objects.order_by('name')
            return super().formfield_for_foreignkey(db_field, request, **kwargs)
    

    Examples for 3 other non-admin-specific methods: