當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。