Например, у меня есть 3 поля как set_soal
, soal
и folder
. Мне нужно назначить все эти поля в raw_id_fields
внутри admin.ModelAdmin
без добавления вручную для отдельных полей.
class DaftarSoal(TimeStampedModel):
....
set_soal = ForeignKey(SetSoal, ...)
soal = ForeignKey(Soal, ...)
folder = ForeignKey(Folder, ...)
основной c способ включить необработанные поля идентификатора внутри admin.ModelAdmin
выглядят так:
@admin.register(DaftarSoal, site=admin_site)
class DaftarSoalAdmin(admin.ModelAdmin):
raw_id_fields = ('set_soal', 'soal', 'folder') # manually
Но могу ли я автоматически настроить все эти поля OneToOneField
и ForeignKey
в raw_id_fields
без добавления это вручную? например, применение миксина классов, например:
class CustomAdminMixin:
raw_id_fields = ()
def __init__(self):
self.setup_raw_id_fields()
def setup_raw_id_fields(self):
# search all OneToOneField and ForeignKey fields.
# and assign into variable `raw_id_fields` above.
и его реализация;
@admin.register(DaftarSoal, site=admin_site)
class DaftarSoalAdmin(CustomAdminMixin, admin.ModelAdmin):
pass
@admin.register(AnotherModel, site=admin_site)
class AnotherModelAdmin(CustomAdminMixin, admin.ModelAdmin):
pass