Менеджер моделей, похоже, хорошая идея. Но, возможно, лучше поместить эту логику для внешних вызовов API в отдельный класс. Например:
class ExternalApiService(object):
model = ModelName
def create_object(self, **kwargs):
# create model object
self.model.objects.create(**kwargs)
def call_external_api(self):
# returns json response from API
def process_api_response(self, json_response):
# process response
def get_latest_object(self):
# get latest object
def get_object(self, pk):
# get object
И используйте их в представлениях.
service = ExternalApiService()
class SomeView(ListView):
queryset = service.get_queryset()
def get_context_data(self, *args, **kwargs):
context = super(SomeView, self).get_context_data(*args, **kwargs)
context['something_specific'] = service.get_latest_object()
return context
Преимущество такого уровня состоит в том, чтобы отделить модели и представления от бизнес-логики и внешних сервисов. Также дает больше гибкости, поскольку вы можете получить доступ к внешнему API из объекта класса обслуживания, не имея доступа к модели или зависимости от модели.