Django -- User.DoesNotExist does not exist?
Solution 1
The problem is really with PyDev, not your code. What you have done is absolutely correct, but IDEs will always have difficulty resolving attributes in a dynamic language like Python. In the case of the DoesNotExist exception, it is added via a __metaclass__
rather than through normal object inheritance, so PyDev is unlikely to be able to find it. However, it should definitely work.
Solution 2
I just discovered Pydev actually has a nice workaround for this.
Go to Window > Preferences, then Pydev > Editor > Code Analysis.
Click the Undefined tab and add "DoesNotExist" to the text box titled Consider the following names as globals.
Solution 3
Pydev has a workaround for such cases (when the members are defined at runtime). Just add #@UndefinedVariable at the end of the string which cause the warning (or ctrl+1 on keyboard when the cursor is at "DoesNotExist"), and it won't complain.
Solution 4
You can also solve it in a different way: just go to the User class, and add @DynamicAttrs in the docstring.
This will tell PyDev that attributes of the class are added dynamically, and will make it not complain any longer for "issues" like DoesNotExist.
Solution 5
Can Eclipse resolve attributes created runtime via __metaclass__
es?
Notice that you never define a DoesNotExist
on any of your models and it is not defined on django.db.models.base.Model
either.
shanyu
Mechanical Engineering + MBA + PhD in finance. Python & Javascript.
Updated on March 30, 2020Comments
-
shanyu about 4 years
I'm trying to get hold of Django. I use Pydev on Eclipse. I have written a simple signup page that I can't get to work. Eclipse complains that User.DoesNotExist is undefined. Most likely, I am missing something trivial. Here's the relevant portion of the code:
from django.contrib.auth.models import User ... class SignUpForm (forms.Form): ... def clean_username (self): try: User.objects.get(username=self.cleaned_data['username']) except User.DoesNotExist: return self.cleaned_data['username'] raise forms.ValidationError(USERNAME_ALREADY_IN_USE) ...
-
muhuk about 15 yearssuggestion: Don't use an IDE with dynamic languages.
-
Jiaaro over 14 yearsThank you so much - those red squiggly underlines have been bugging me for ages :)
-
DrBloodmoney about 14 yearsThanks for this. I was mostly just ignoring and chalked it up to Python vs. Eclipse and being a dynamic language, etc. +1
-
SmileyChris about 14 yearsGlad to be of service :) Here's what my complete "consider as globals" box looks like: _,tr,DoesNotExist,MultipleObjectsReturned,base_fields,_meta,ops,outbox