Django - User.DoesNotExist não existe?

votos
28

Eu estou tentando se apossar de Django. Eu uso Pydev em Eclipse. Eu escrevi uma página de inscrição simples, que eu não posso começar a trabalhar. Eclipse reclama que User.DoesNotExist é indefinido. Muito provavelmente, eu estou faltando alguma coisa trivial. Aqui está a parte relevante do código:

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)
    ...
Publicado 12/05/2009 em 08:49
fonte usuário
Em outras línguas...                            


7 respostas

votos
19

Eu só descobri Pydev realmente tem uma boa solução para este.

Ir para a Janela > Preferências , em seguida, Pydev > Editores > análise de código .

Clique no Undefined guia e adicionar "DoesNotExist" à caixa de texto intitulado Considere os seguintes nomes como globals .

Respondeu 08/09/2009 em 00:00
fonte usuário

votos
18

O problema é realmente com PyDev, não seu código. O que você tem feito é absolutamente correto, mas IDEs sempre terá dificuldades para resolver atributos em uma linguagem dinâmica como Python. No caso da exceção DoesNotExist, ele é adicionado através de um __metaclass__, em vez de através de herança objeto normal, assim PyDev é improvável que seja capaz de encontrá-lo. No entanto, deve funcionar definitivamente.

Respondeu 12/05/2009 em 10:11
fonte usuário

votos
7

Pydev tem uma solução para tais casos (quando os membros são definidos em tempo de execução). Basta adicionar # @ UndefinedVariable no final da cadeia que causam o aviso (ou ctrl + 1 no teclado quando o cursor está em "DoesNotExist"), e não vai reclamar.

Respondeu 12/05/2009 em 10:29
fonte usuário

votos
2

Pode Eclipse atributos resolver criados runtime via __metaclass__es?

Observe que você nunca definir uma DoesNotExistem alguns de seus modelos e não é definido em django.db.models.base.Modelqualquer um.

Respondeu 12/05/2009 em 10:03
fonte usuário

votos
1

Tenho mesmo problema no Ubuntu em um virtualenv para resolver o problema Eu tenho usado essa trechos.

http://djangosnippets.org/snippets/191/#c3091

Em parituclar ele fazer campos personalizados de usuários com código:

class UserField(forms.CharField):
    def clean(self, value):
        super(UserField, self).clean(value)
        try:
            User.objects.get(username=value)
            raise forms.ValidationError("Someone is already using this username. Please pick an other.")
        except User.DoesNotExist:
            return value
Respondeu 18/06/2010 em 13:13
fonte usuário

votos
1

Você também pode resolvê-lo de uma maneira diferente: basta ir para a classe de usuário, e adicionar @DynamicAttrs na docstring.
Isto irá dizer PyDev que os atributos da classe são adicionados dinamicamente e irá torná-lo não reclamar mais tempo para "problemas" como DoesNotExist.

Respondeu 07/04/2010 em 11:34
fonte usuário

votos
0

Eclipse reclama que User.DoesNotExist é indefinido.

O que você quer dizer com isso? Você tem erro python e rastreamento de pilha? Este código tem de trabalhar (como na documentação ). Parece um problema eclipse. Basta executar servidor dev e ver se funciona ou não:

manage.py runserver
Respondeu 12/05/2009 em 10:10
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more