Существуют ли "N + 1 проблемы" в "formfield_for_foreignkey()"? (Django)

Я переопределил formfield_for_foreignkey() для отображения комбинированного текста "foreign key value" и "its parent value" в Django Admin как показано ниже:

@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        formfield = super().formfield_for_foreignkey(db_field, request, **kwargs)
        if db_field.name == "my_field":
            formfield.label_from_instance = lambda obj: f'{obj} ({obj.my_parent})'
        return formfield

Затем, используя "print()", я проверил, сколько раз вызывается "formfield_for_foreignkey()" и "if block" в "formfield_for_foreignkey()", как показано ниже, при открытии страницы:

@admin.register(MyModel)
class MyModelAdmin(admin.ModelAdmin):
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
        formfield = super().formfield_for_foreignkey(db_field, request, **kwargs)
        
        print("formfield_for_foreignkey") # Called "18 times"

        if db_field.name == "my_field":
            
            print("if block") # Called "9 times"
          
            formfield.label_from_instance = lambda obj: f'{obj} ({obj.my_parent})'
        return formfield

В результате print("formfield_for_foreignkey") вызывается 18 раз что означает "formfield_for_foreignkey()" вызывается 18 раз.

И, print("if block") вызывается 9 раз что означает "if block" в "formfield_for_foreignkey()" вызывается 9 раз.

Мои вопросы:

Является ли "N + 1 проблемой" тем, что:

  • "formfield_for_foreignkey()" сам вызывается 18 раз?
  • "if block" сам вызывается 9 раз?
  • "{obj}" в "if block" вызывается 9 раз?
  • "{obj.my_parent}" в "if block" вызывается 9 раз?
Вернуться на верх