django admin sort foreign key field list

后端 未结 3 1810
北海茫月
北海茫月 2021-01-30 17:12

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 woul

3条回答
  •  予麋鹿
    予麋鹿 (楼主)
    2021-01-30 17:31

    Sure - you can...

    • ModelAdmin specific ordering via formfield_for_foreignkey
    • Set default global ordering via a Manager
    • Set default ordering via model meta class
    • Form specific ordering then passed to your ModelAdmin

    ModelAdmin specific method: (the other methods are in my answer in the post linked to above)

    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(MyModelAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)
    

    Examples for the other 3 non admin specific methods in my post linked above.

提交回复
热议问题