Класс Serializer как свойство класса Model - плохая ли это практика?

Я хочу написать пользовательскую команду, которая требует отдельных сериализаторов для нескольких классов Model. Чтобы сделать это итерируемым, я подумал, что было бы неплохо добавить пользовательское свойство к задействованным Моделям.

Ниже приведен краткий пример того, что я себе представлял, внутри приложения:

# models.py
from django.db import models

class Foo(models.Model):
    # field properties, etc.
    command_serializer_class = FooCommandSerializer


# serializers.py
from rest_framework.serializers import ModelSerializer

class FooCommandSerializer(ModelSerializer):
    class Meta:
        model = Foo


# management/commands/foo_command.py
from django.core.management.base import BaseCommand

class FooCommand(BaseCommand):
    for model_class in [Foo, OtherModels]:
        qs = Foo.objects.all()
        # do things
        serializer = model_class.command_serializer_class(qs, many=True)
        
        print(f"Model has {len(serializer.data)} records.")

На первый взгляд, кажется излишним указывать Сериализатор на Модель, так как это ассоциация один-к-одному наоборот - то есть, Сериализатор должен иметь одну конкретную Модель, определенную в метаклассе.

Однако я не нашел способа перечислить сериализаторы, использующие определенную модель, поэтому это кажется мне наиболее чистым решением.

Является ли это хорошей практикой, или может подкосить меня в долгосрочной перспективе? Есть ли причины, по которым я не должен этого делать или найти другой способ итерации моделей таким образом?

Вернуться на верх