Django rest framework return model queryset based on user
We are building middleware and have the following situation: we have different users, each has their own database (not managed by us), all have some sort of 'Order' table.
We built an API endpoint where users can create an Order, a buffer is linked to the Order and based on the user who created the Order we send it to the correct database. This basically means we have a 'middleware' model Order, and during processing the Order is parsed to match the structure of the user's database and create it in their database.
Now we want to retrieve the orders from their database and display them at our API endpoint. We have non-managed models for the users to retrieve the orders, one is called AppOrder. But since our endpoint uses the middleware Order model we cannot simply return AppOrder.objects.all() when user is X, since the serializer is built for Order not for AppOrder.
class OrderViewSet(viewsets.ModelViewSet):
queryset = Order.objects.all() # <-- Simply returns all middleware Order objects, not what we want
serializer_class = OrderSerializer
The response should be the same, e.g. it should not be different if another user with a different db makes the call.
How can I, based on the user, return the correct orders from their respective database and still be able to filter/order by?
Fetching them from AppOrder, creating middleware Order objects for them and then returning them is both time consuming and impossible.
django django-rest-framework
add a comment |
We are building middleware and have the following situation: we have different users, each has their own database (not managed by us), all have some sort of 'Order' table.
We built an API endpoint where users can create an Order, a buffer is linked to the Order and based on the user who created the Order we send it to the correct database. This basically means we have a 'middleware' model Order, and during processing the Order is parsed to match the structure of the user's database and create it in their database.
Now we want to retrieve the orders from their database and display them at our API endpoint. We have non-managed models for the users to retrieve the orders, one is called AppOrder. But since our endpoint uses the middleware Order model we cannot simply return AppOrder.objects.all() when user is X, since the serializer is built for Order not for AppOrder.
class OrderViewSet(viewsets.ModelViewSet):
queryset = Order.objects.all() # <-- Simply returns all middleware Order objects, not what we want
serializer_class = OrderSerializer
The response should be the same, e.g. it should not be different if another user with a different db makes the call.
How can I, based on the user, return the correct orders from their respective database and still be able to filter/order by?
Fetching them from AppOrder, creating middleware Order objects for them and then returning them is both time consuming and impossible.
django django-rest-framework
add a comment |
We are building middleware and have the following situation: we have different users, each has their own database (not managed by us), all have some sort of 'Order' table.
We built an API endpoint where users can create an Order, a buffer is linked to the Order and based on the user who created the Order we send it to the correct database. This basically means we have a 'middleware' model Order, and during processing the Order is parsed to match the structure of the user's database and create it in their database.
Now we want to retrieve the orders from their database and display them at our API endpoint. We have non-managed models for the users to retrieve the orders, one is called AppOrder. But since our endpoint uses the middleware Order model we cannot simply return AppOrder.objects.all() when user is X, since the serializer is built for Order not for AppOrder.
class OrderViewSet(viewsets.ModelViewSet):
queryset = Order.objects.all() # <-- Simply returns all middleware Order objects, not what we want
serializer_class = OrderSerializer
The response should be the same, e.g. it should not be different if another user with a different db makes the call.
How can I, based on the user, return the correct orders from their respective database and still be able to filter/order by?
Fetching them from AppOrder, creating middleware Order objects for them and then returning them is both time consuming and impossible.
django django-rest-framework
We are building middleware and have the following situation: we have different users, each has their own database (not managed by us), all have some sort of 'Order' table.
We built an API endpoint where users can create an Order, a buffer is linked to the Order and based on the user who created the Order we send it to the correct database. This basically means we have a 'middleware' model Order, and during processing the Order is parsed to match the structure of the user's database and create it in their database.
Now we want to retrieve the orders from their database and display them at our API endpoint. We have non-managed models for the users to retrieve the orders, one is called AppOrder. But since our endpoint uses the middleware Order model we cannot simply return AppOrder.objects.all() when user is X, since the serializer is built for Order not for AppOrder.
class OrderViewSet(viewsets.ModelViewSet):
queryset = Order.objects.all() # <-- Simply returns all middleware Order objects, not what we want
serializer_class = OrderSerializer
The response should be the same, e.g. it should not be different if another user with a different db makes the call.
How can I, based on the user, return the correct orders from their respective database and still be able to filter/order by?
Fetching them from AppOrder, creating middleware Order objects for them and then returning them is both time consuming and impossible.
django django-rest-framework
django django-rest-framework
asked Nov 14 '18 at 13:23
God SerenaGod Serena
288
288
add a comment |
add a comment |
0
active
oldest
votes
Your Answer
StackExchange.ifUsing("editor", function () {
StackExchange.using("externalEditor", function () {
StackExchange.using("snippets", function () {
StackExchange.snippets.init();
});
});
}, "code-snippets");
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "1"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53301277%2fdjango-rest-framework-return-model-queryset-based-on-user%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
0
active
oldest
votes
0
active
oldest
votes
active
oldest
votes
active
oldest
votes
Thanks for contributing an answer to Stack Overflow!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53301277%2fdjango-rest-framework-return-model-queryset-based-on-user%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown