Django rest framework возвращает модель запроса на основе пользователя - PullRequest
0 голосов
/ 14 ноября 2018

Мы создаем промежуточное программное обеспечение и имеем следующую ситуацию: у нас разные пользователи, у каждого своя база данных (не управляемая нами), у всех есть своего рода таблица «Заказ».

Мы создали конечную точку API, где пользователи могут создавать Заказ, буфер привязан к Заказу и на основе пользователя, который создал Заказ, мы отправляем его в правильную базу данных. По сути, это означает, что у нас есть модель Order 'middleware', и во время обработки Order анализируется, чтобы соответствовать структуре базы данных пользователя и создавать ее в своей базе данных. Теперь мы хотим извлечь заказы из их базы данных и отобразить их в нашей конечной точке API. У нас есть неуправляемые модели для пользователей, чтобы получить заказы, одна называется AppOrder. Но так как наша конечная точка использует промежуточную модель Orderware, мы не можем просто вернуть AppOrder.objects.all (), когда пользователь X, поскольку сериализатор создан для Order, а не для AppOrder.

class OrderViewSet(viewsets.ModelViewSet):
    queryset = Order.objects.all() # <-- Simply returns all middleware Order objects, not what we want
    serializer_class = OrderSerializer

Ответ должен быть таким же, например, это не должно быть иначе, если другой пользователь с другим БД делает вызов.

Как я могу, основываясь на пользователе, вернуть правильные заказы из соответствующей базы данных и при этом иметь возможность фильтровать / заказывать по?

Извлечение их из AppOrder, создание для них промежуточных объектов Order Order, а затем их возврат являются трудоемкими и невозможными.

...