我有多个使用外键下拉菜单的模型,我想根据条件自定义外键下拉菜单。我尝试使用装饰器,但在添加管理表单中出现下拉菜单
from .decorators import admin_active_country
.
.
.
@admin_active_country
def formfield_for_foreignkey(self, db_field, request, **kwargs):
return super().formfield_for_foreignkey(db_field, request, **kwargs)
我创建了装饰器以实现以下效果
if db_field.name == "country":
kwargs["queryset"] = Country.objects.filter(is_active=True)
这是装饰器,但是使用装饰器时,我看不到管理页面中的下拉列表,消失了
def admin_active_country(func):
print(func,"function priniting")
@functools.wraps(func)
def wraps(*args,**kwargs):
# ags[1] is db_field
if args[1].name == "country":
kwargs["queryset"] = Country.objects.filter(is_active=True)
return func(*args,**kwargs)
return wraps
下面的代码工作正常,我想使用装饰器实现相同的效果,以便我可以通过遵循DRY将其应用于多个管理员
def formfield_for_foreignkey(self, db_field, request, **kwargs):
if db_field.name == "country":
kwargs["queryset"] = Country.objects.filter(is_active=True)
return super().formfield_for_foreignkey(db_field, request, **kwargs)
请帮帮我,谢谢!