使用 limit_choices_to 限制管理员选项
我想在管理界面中限制一个外键的选择项,使用 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)