当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python Django ModelAdmin.formfield_for_foreignkey用法及代码示例


本文介绍django.contrib.admin.ModelAdmin.formfield_for_foreignkey的用法。

声明

ModelAdmin.formfield_for_foreignkey(db_field, request, **kwargs)

ModelAdmin 上的 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().formfield_for_foreignkey(db_field, request, **kwargs)

这使用HttpRequest 实例过滤Car 外键字段以仅显示User 实例拥有的汽车。

对于更复杂的过滤器,您可以使用 ModelForm.__init__() 方法根据模型的 instance 进行过滤(请参阅处理关系的字段)。例如:

class CountryAdminForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fields['capital'].queryset = self.instance.cities.all()

class CountryAdmin(admin.ModelAdmin):
    form = CountryAdminForm

相关用法


注:本文由纯净天空筛选整理自djangoproject.com大神的英文原创作品 django.contrib.admin.ModelAdmin.formfield_for_foreignkey。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。