Недавно я начал реорганизовывать / переписывать свой код. Я заметил, что некоторые части моего кода во многом похожи, и мне интересно, смогу ли я уменьшить объем кода, необходимый для получения той же функциональности.
Я хотел бы создать представления на основе названий моделей, которые яиметь и давать им те же мета-атрибуты, где единственное отличие - это наименование модели.
В настоящее время у меня есть (в views.py):
from finfor import (models, serializers)
class clientOrganizationsListCreate(generics.ListCreateAPIView):
queryset = models.clientOrganizations.objects.all()
serializer_class = serializers.clientOrganizationsSerializer
class financialSystemsListCreate(generics.ListCreateAPIView):
queryset = models.financialSystems.objects.all()
serializer_class = serializers.financialSystemsSerializer
Как видите, единственное отличиемежду ними есть clientOrganizations <> financialSystems.
Я пробовал следующее:
from finfor import (models, serializers)
from django.apps import apps
for model in apps.get_app_config('finfor').models.values():
class f'{model}ListCreate'(generics.ListCreateAPIView):
queryset = model.objects.all()
serializer_class = serializers[f'{model}Serializer']
и:
from finfor import (models, serializers)
from django.apps import apps
for model in apps.get_app_config('finfor').models.values():
type(f'{model}Serializer', (generics.ListCreateAPIView, ),
{'queryset': model.objects.all(),
'serializer_class': serializers[f'{model}Serializer']
}
)
Я думаю, что янеправильно использую type ().
Есть ли способ генерировать классы путем итерации списка ['financialSystems', 'clientOrganizations'] или чего-то подобного?