Django Admin管理后台详解15(转)--在Django Admin中过滤外联字段

如何在Django Admin中过滤外联字段?#

你的Hero模型有个外联字段到Category模型。因此,所有Category对象将显示在该外联字段的下拉列表中。如果你只想在特定的Category子集中选择,你可以通过重写formfield_for_foreignkey来实现:

Copy
@admin.register(Hero)
class HeroAdmin(admin.ModelAdmin, ExportCsvMixin):
    ...
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == "category":
            kwargs["queryset"] = Category.objects.filter(name__in=['God', 'Demi God'])
        return super().formfield_for_foreignkey(db_field, request, **kwargs)

 

posted @ 2021-11-22 14:04  Mars.wang  阅读(204)  评论(0编辑  收藏  举报