使用 limit_choices_to 限制管理员选项

8 投票
1 回答
2334 浏览
提问于 2025-04-17 06:48

我想在管理界面中限制一个外键的选择项,使用 limit_choices_to 这个功能;不过,我希望在不修改模型的情况下实现这个,因为这个模型是从一个我无法控制的库中引入的。我该如何动态地做到这一点?或者我可以在管理模型上使用一个字段来实现这个吗?

谢谢,
--Eytan

1 个回答

14

Django 提供了一个管理功能,可以用来修改外键的查询集,具体的功能叫做 formfield_for_foreignkey

class MyModelAdmin(admin.ModelAdmin):
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        if db_field.name == "car":
            kwargs["queryset"] = Car.objects.filter(owner=request.user)
        return super(MyModelAdmin, self).formfield_for_foreignkey(db_field, request, **kwargs)

撰写回答