У меня есть несколько моделей, использующих раскрывающийся список внешних ключей, я хочу настроить раскрывающийся список внешних ключей в соответствии с условием. Я пытался использовать декораторы, но раскрывающиеся списки в форме добавления администратора
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)
Пожалуйста, помогите мне, спасибо заранее