Написание декоратора при использовании django-export-import

Привет, Хабр! Меня зовут Павел Цвилюк, начинающий Python Developer. В ходе работы над одним из проектов я столкнулся с проблемой подключения поискового поля и выгрузки отчётов в exel в административной панели. Их необходимо было регистрировать вместе с моим классом User:

models.py
class User(models.Model):
    name=models.CharField(max_length=200)
    surname=models.CharField(max_length=200)
    email=models.EmailField()
    password=models.CharField(max_length=200)
    telephone=models.PositiveIntegerField(max_length=12,blank=True,null=True)

Так выглядел мой код, когда я попытался изначально зарегистрировать их:

admin.py
from django.contrib import admin
from .models import User
from import_export import resources
from import_export.admin import ImportExportModelAdmin

class UsersAdmin(admin.ModelAdmin):
    search_fields = ('name', 'email', 'telephone')

class UsersResource(resources.ModelResource):
    class Meta:
        model = User
        skip_unchanged = True
        fields = ('id', 'name', 'email', 'telephone')

class UserAdmin(ImportExportModelAdmin):
        resource_class = UsersResource

admin.site.register(User, UsersAdmin, UsersAdmin)

Запустив вышеописанный код я получил следующее:
admin.site.register(User, UsersAdmin, UserAdmin)
TypeError: register() takes from 2 to 3 positional arguments but 4 were given
Я передаю 3 possitional arguments, но я не учёл, что «self» being passed implicitly. По-отдельности они работали без каких-либо проблем, так что надо было просто правильно укомплектовать это всё для передачи. Я выяснил, что ImportExportModelAdmin есть в родителях admin.ModelAdmin, как и UsersAdmin. Использование декоратора было лучшим решением для выхода из этой ситуации.

Свою строку admin.site.register(User, UsersAdmin, UsersAdmin) я заменил на следующую:

@admin.register(User)
class UserAdmin(ImportExportModelAdmin):
    search_fields = ('name', 'email', 'telephone')

И вуаля, всё заработало! Для меня это было маленькой, но очень приятной победой. Надеюсь, что моя статья поможет тем, кто столкнётся с такой же проблемой. Спасибо, что дочитали!
Метки:
python, django, django-export-import