限制管理员选择使用limit_choices_to

时间:2011-11-22 04:09:22

标签: python django

我想使用limit_choices_to限制管理界面中的ForeignKey选项;但是,我想在不改变模型的情况下实现这一点,因为模型是从库中引入的,我无法控制。动态实现这一目标的方法是什么?或者我可以使用管理模型上的字段来实现这一目标吗?

谢谢, --Eytan

1 个答案:

答案 0 :(得分:12)

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)