2013-11-21 8 views
5

मैं Django के लिए नौसिखिया हूँ। मैं UserProfile बनाने की कोशिश कर रहा हूँ। सबसे पहले मैं एक मॉडल और models.py में अपनी हैंडलर इस प्रकार है ..Django त्रुटि: userprofile मिलान क्वेरी मौजूद नहीं है

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) 

AUTH_PROFILE_MODULE = "lib.UserProfile" 

साथ फिर संपादित settings.py जहां lib जो init .py शामिल रूट फ़ोल्डर, मॉडल है बनाया एपी और सब।

फिर मैंने संग्रह में सभी मौजूदा उपयोगकर्ता को हटा दिया, और जब मैंने उन्हें व्यवस्थापक पैनल से पुन: प्रस्तुत किया, तो एक नया संग्रह lib_userprofile स्वचालित रूप से मॉडल में वर्णित फ़ील्ड के साथ बनाया गया है। के रूप में

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

इस प्रकार अब मैं एक दृश्य crearted लेकिन मुझे त्रुटि निम्नलिखित दे रहा है ..

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'] 

किसी भी मदद कृपया सराहना की जाएगी .. मैं इस त्रुटि पर कई सवाल में पता चला, लेकिन मैं नहीं था त्रुटि को हल करने में सक्षम ..

+0

कृपया मदद करें .... – Pawan

+1

'उपयोगकर्ता प्रोफाइल 'में' उपयोगकर्ता' के साथ 'OneToOne' संबंध होना चाहिए। साथ ही, प्रोफाइल वास्तव में बनाया गया है? सिग्नल हैंडलर में आपका निर्माण विफल हो जाएगा क्योंकि कोई नाम प्रदान नहीं किया गया है। शायद, आप वास्तविक कोड नहीं दिखा रहे हैं। – Rohan

+1

ठीक है, मैंने इसे OneToOneField में बदल दिया है। जब मैं व्यवस्थापक पैनल से नया उपयोगकर्ता जोड़ता हूं तो यह useprofile स्वचालित रूप से इन क्षेत्रों "_id" के साथ बनाया जाता है: ऑब्जेक्टआईडी ("528da840ee4340252254e34b"), "नाम": "", "user_id": "528da840ee4340252254e34a" और मैं सटीक कोड दिखा रहा हूं। आप कौन सा कोड वास्तविक नहीं ढूंढ रहे हैं .. – Pawan

उत्तर

8

मैंने त्रुटि का समाधान किया है। मैं अपने स्वयं के प्रश्न का उत्तर दे रहा हूं क्योंकि इससे किसी को भी समस्या का सामना करने में मदद मिल सकती है।

मैं get_profile समारोह में त्रुटि का सामना किया, तो मैं user__id__exact=self.id with user = self.id की जगह models.py get_profile में 383 लाइन पर /contrib/auth/models.py पर स्थित फ़ाइल() फ़ंक्शन का कोड की जाँच की और यह ठीक काम किया।

+0

में फंस गया हूं तो आपने कोर डीजेंगो कोड बदल दिया है? मुझे उम्मीद है कि यह अभी तय है :) – mehmet

संबंधित मुद्दे