Handling two objects does not exist errors
I have a get_context_data
function for my DetailView
Inside this function, I try to query two results. However, if the object does not exist then I get an error. If both objects don't exist, then I get two errors. I know I can do a try-except, but what if both conditions fail what is a more elegant way of catching both errors? I know I can do two try-except, but is there a better way specifically where I can make it so that the query does not return an object does not exist, instead it returns a default value?
Here's what I have:
def get_context_data(self, **kwargs):
context = super(IndexView, self).get_context_data(**kwargs)
try:
vote = Voting.objects.filter(user_id=self.request.user,
choice__question=self.kwargs.get('pk'))
context['voted'] = vote[0].choice.id
context['follower'] =
.object.user.followers.get(follower=self.request.user)
except:
context['voted'] = 0
return context
python django
add a comment |
I have a get_context_data
function for my DetailView
Inside this function, I try to query two results. However, if the object does not exist then I get an error. If both objects don't exist, then I get two errors. I know I can do a try-except, but what if both conditions fail what is a more elegant way of catching both errors? I know I can do two try-except, but is there a better way specifically where I can make it so that the query does not return an object does not exist, instead it returns a default value?
Here's what I have:
def get_context_data(self, **kwargs):
context = super(IndexView, self).get_context_data(**kwargs)
try:
vote = Voting.objects.filter(user_id=self.request.user,
choice__question=self.kwargs.get('pk'))
context['voted'] = vote[0].choice.id
context['follower'] =
.object.user.followers.get(follower=self.request.user)
except:
context['voted'] = 0
return context
python django
add a comment |
I have a get_context_data
function for my DetailView
Inside this function, I try to query two results. However, if the object does not exist then I get an error. If both objects don't exist, then I get two errors. I know I can do a try-except, but what if both conditions fail what is a more elegant way of catching both errors? I know I can do two try-except, but is there a better way specifically where I can make it so that the query does not return an object does not exist, instead it returns a default value?
Here's what I have:
def get_context_data(self, **kwargs):
context = super(IndexView, self).get_context_data(**kwargs)
try:
vote = Voting.objects.filter(user_id=self.request.user,
choice__question=self.kwargs.get('pk'))
context['voted'] = vote[0].choice.id
context['follower'] =
.object.user.followers.get(follower=self.request.user)
except:
context['voted'] = 0
return context
python django
I have a get_context_data
function for my DetailView
Inside this function, I try to query two results. However, if the object does not exist then I get an error. If both objects don't exist, then I get two errors. I know I can do a try-except, but what if both conditions fail what is a more elegant way of catching both errors? I know I can do two try-except, but is there a better way specifically where I can make it so that the query does not return an object does not exist, instead it returns a default value?
Here's what I have:
def get_context_data(self, **kwargs):
context = super(IndexView, self).get_context_data(**kwargs)
try:
vote = Voting.objects.filter(user_id=self.request.user,
choice__question=self.kwargs.get('pk'))
context['voted'] = vote[0].choice.id
context['follower'] =
.object.user.followers.get(follower=self.request.user)
except:
context['voted'] = 0
return context
python django
python django
asked Nov 13 '18 at 3:59
user2896120user2896120
9511021
9511021
add a comment |
add a comment |
2 Answers
2
active
oldest
votes
Using queryset.exists()
could judge if a queryset is empty.Hope this could help.
if Voting.objects.filter(user_id=self.request.user,choice__question=self.kwargs.get('pk')).exists():
#do your stuffs
else:
#give it a default value
If you only want to get the first object after filtering, you can also try
.get()
: Django's .get().first()
:. Django's .first()
Edit: Make sure that your program is ready to deal with anonymous users and unexpected inputs,so the filter can get it's value properly.
add a comment |
You may try the following code, it will not output errors when either of vote
, context['voted']
or context['follower']
is empty. Hope this could help.
try:
#do your stuffs
except:
vote = ""
context['voted'] = ""
context['follower'] = ""
return context
add a comment |
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%2f53273574%2fhandling-two-objects-does-not-exist-errors%23new-answer', 'question_page');
);
Post as a guest
Required, but never shown
2 Answers
2
active
oldest
votes
2 Answers
2
active
oldest
votes
active
oldest
votes
active
oldest
votes
Using queryset.exists()
could judge if a queryset is empty.Hope this could help.
if Voting.objects.filter(user_id=self.request.user,choice__question=self.kwargs.get('pk')).exists():
#do your stuffs
else:
#give it a default value
If you only want to get the first object after filtering, you can also try
.get()
: Django's .get().first()
:. Django's .first()
Edit: Make sure that your program is ready to deal with anonymous users and unexpected inputs,so the filter can get it's value properly.
add a comment |
Using queryset.exists()
could judge if a queryset is empty.Hope this could help.
if Voting.objects.filter(user_id=self.request.user,choice__question=self.kwargs.get('pk')).exists():
#do your stuffs
else:
#give it a default value
If you only want to get the first object after filtering, you can also try
.get()
: Django's .get().first()
:. Django's .first()
Edit: Make sure that your program is ready to deal with anonymous users and unexpected inputs,so the filter can get it's value properly.
add a comment |
Using queryset.exists()
could judge if a queryset is empty.Hope this could help.
if Voting.objects.filter(user_id=self.request.user,choice__question=self.kwargs.get('pk')).exists():
#do your stuffs
else:
#give it a default value
If you only want to get the first object after filtering, you can also try
.get()
: Django's .get().first()
:. Django's .first()
Edit: Make sure that your program is ready to deal with anonymous users and unexpected inputs,so the filter can get it's value properly.
Using queryset.exists()
could judge if a queryset is empty.Hope this could help.
if Voting.objects.filter(user_id=self.request.user,choice__question=self.kwargs.get('pk')).exists():
#do your stuffs
else:
#give it a default value
If you only want to get the first object after filtering, you can also try
.get()
: Django's .get().first()
:. Django's .first()
Edit: Make sure that your program is ready to deal with anonymous users and unexpected inputs,so the filter can get it's value properly.
edited Nov 13 '18 at 6:31
answered Nov 13 '18 at 4:29
Woody JohnsonWoody Johnson
748
748
add a comment |
add a comment |
You may try the following code, it will not output errors when either of vote
, context['voted']
or context['follower']
is empty. Hope this could help.
try:
#do your stuffs
except:
vote = ""
context['voted'] = ""
context['follower'] = ""
return context
add a comment |
You may try the following code, it will not output errors when either of vote
, context['voted']
or context['follower']
is empty. Hope this could help.
try:
#do your stuffs
except:
vote = ""
context['voted'] = ""
context['follower'] = ""
return context
add a comment |
You may try the following code, it will not output errors when either of vote
, context['voted']
or context['follower']
is empty. Hope this could help.
try:
#do your stuffs
except:
vote = ""
context['voted'] = ""
context['follower'] = ""
return context
You may try the following code, it will not output errors when either of vote
, context['voted']
or context['follower']
is empty. Hope this could help.
try:
#do your stuffs
except:
vote = ""
context['voted'] = ""
context['follower'] = ""
return context
answered Nov 13 '18 at 6:47
Aqueous CarlosAqueous Carlos
293213
293213
add a comment |
add a comment |
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%2f53273574%2fhandling-two-objects-does-not-exist-errors%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