Класс 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.")
На первый взгляд, кажется излишним указывать Сериализатор на Модель, так как это ассоциация один-к-одному наоборот - то есть, Сериализатор должен иметь одну конкретную Модель, определенную в метаклассе.
Однако я не нашел способа перечислить сериализаторы, использующие определенную модель, поэтому это кажется мне наиболее чистым решением.
Является ли это хорошей практикой, или может подкосить меня в долгосрочной перспективе? Есть ли причины, по которым я не должен этого делать или найти другой способ итерации моделей таким образом?