2013-11-21 18 views
5

Ich bin Neuling nach Django. Ich versuche, UserProfile zu erstellen. Zuerst habe ich ein Modell und seine Handler in models.py wie folgt ..Django Fehler: userprofile passende Abfrage existiert nicht

class UserProfile(models.Model): 
    user = models.ForeignKey(User,null=False) 

    name = models.CharField(max_length=200) 

    def __unicode__(self): 
     return self.name 

def create_user_profile(sender, instance, created, **kwargs): 
    if created: 
     UserProfile.objects.create(user=instance) 

post_save.connect(create_user_profile, sender=User) 

Dann bearbeitet settings.py mit

AUTH_PROFILE_MODULE = "lib.UserProfile" 

wo lib Stammordner ist die init Py enthält, Modelle .py und alle.

Dann löschte ich alle aktuellen Benutzer in der Sammlung, und wenn ich sie aus dem Admin-Panel wieder eingab, wird automatisch eine neue Sammlung lib_userprofile mit Feldern erstellt, die ich im Modell erwähnt. Jetzt crearted ich eine Ansicht wie folgt

class CurrentUser(APIView): 
     authentication_classes = (authentication.TokenAuthentication,) 
     def get(self,request): 
      if request.user.is_authenticated(): 
         profile=request.user.get_profile() 
         return Response(profile) 

Aber wird mir geben Fehler folgende ..

UserProfile matching query does not exist. 
Request Method: GET 
Request URL: http://pawan.demoilab.pune/api/currentuser 
Django Version: 1.3.7 
Exception Type: DoesNotExist 
Exception Value:  
UserProfile matching query does not exist. 
Exception Location: /usr/local/lib/python2.7/dist-packages/django/db/models/query.py in get, line 351 
Python Executable: /usr/bin/python 
Python Version: 2.7.3 
Python Path:  
['/var/www/pawan.demoilab.pune/web/api', 
'/usr/local/lib/python2.7/dist-packages/Fabric-1.8.0-py2.7.egg', 
'/usr/local/lib/python2.7/dist-packages/paramiko-1.12.0-py2.7.egg', 
'/usr/local/lib/python2.7/dist-packages/ecdsa-0.10-py2.7.egg', 
'/usr/local/lib/python2.7/dist-packages/pymongo-2.6.3-py2.7-linux-i686.egg', 
'/usr/lib/python2.7', 
'/usr/lib/python2.7/plat-linux2', 
'/usr/lib/python2.7/lib-tk', 
'/usr/lib/python2.7/lib-old', 
'/usr/lib/python2.7/lib-dynload', 
'/usr/local/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages', 
'/usr/lib/python2.7/dist-packages/PIL', 
'/usr/lib/pymodules/python2.7'] 

Jede mögliche Hilfe bitte klar sein .. ich viele Fragen zu diesem Fehler gefunden, aber ich war nicht in der Lage, Fehler zu beheben.

+0

Bitte Hilfe .... – Pawan

+1

'UserProfile' sollte' OneToOne' Beziehung mit 'User' haben. Ist das Profil tatsächlich erstellt? Ihr create in signal-Handler wird fehlschlagen, da kein Name angegeben wird. Wahrscheinlich zeigen Sie nicht den tatsächlichen Code. – Rohan

+1

Ok, ich habe es in OneToOneField geändert. Wenn ich einen neuen Benutzer aus dem Adminbereich hinzufüge, wird UseProfile automatisch mit diesen Feldern erstellt "_id": ObjectId ("528da840ee4340252254e34b"), "name": "", "user_id": "528da840ee4340252254e34a" Und ich zeige genauen Code. Was Code Sie nicht wirklich finden .. – Pawan

Antwort

8

Ich habe den Fehler behoben. Ich beantworte meine eigene Frage, da sie jemandem helfen könnte, der mit demselben Problem konfrontiert ist.

Ich habe Fehler in get_profile Funktion gefunden, also habe ich den Code der models.py Datei unter /contrib/auth/models.py bei 383 Zeile in get_profile() -Funktion durch Ersetzen user__id__exact=self.id with user = self.id überprüft und es hat gut funktioniert.

+0

Also änderten Sie Core-Django-Code? Ich hoffe es ist jetzt behoben :) – mehmet

Verwandte Themen