python - Django, Update Profile, exclude current user email -


मैंने एक अपडेट प्रोफाइल पृष्ठ बनाया है I तो फ़ील्ड हैं: ईमेल, प्रथम नाम, अंतिम नाम।

सत्यापन में, मैं उपयोगकर्ता के ईमेल पते को बाहर करने का प्रयास नहीं कर रहा हूं, और मैं अन्य उपयोगकर्ता के ईमेल पते को भी फ़िल्टर कर रहा हूं। मुझे लगता है कि अगर आप कोड देखते हैं तो आप समझेंगे कि मैं किस बारे में बात कर रहा हूं।

मैंने यहां कई सवाल पढ़े लेकिन कुछ नहीं मिला। कुछ उपयोगकर्ताओं को एक ही समस्या थी।

तो नीचे दिए गए कोड के साथ, मुझे जो मुद्दा मिल रहा है वह है: प्रकार वस्तु 'उपयोगकर्ता' का कोई विशेषता 'ईमेल' नहीं है। >

मैंने मौजूदा उपयोगकर्ता का ईमेल पता प्राप्त करने के कई तरीकों की कोशिश की (फ़ॉर्म को सहेजने से पहले) परन्तु अब भी कुछ नहीं।

forms.py

  वर्ग UpdateProfile .ModelForm): ईमेल = forms.EmailField (अपेक्षित = सच) first_name = forms.CharField (अपेक्षित = false) last_name = forms.CharField (अपेक्षित = false) वर्ग मेटा मॉडल = उपयोगकर्ता क्षेत्रों = ( 'ई-मेल', 'first_name' 'last_name') डीईएफ़ clean_email (स्वयं): ईमेल = self.cleaned_data.get ( 'ईमेल') current_user_email = User.email अगर User.objects.filter (email__iexact = ईमेल) .exclude (email__iexact = current_user_email) .count () & gt; 0: उपयोगकर्ता = सुपर (UpdateProfile, आत्म) .save (: forms.ValidationError (। '। इस ईमेल पते से प्रयोग में है' 'कृपया कोई अन्य ईमेल पते की आपूर्ति') वापसी ईमेल डीईएफ़ (स्वयं, प्रतिबद्ध = सच) को बचाने बढ़ा Commit = false) यदि कमिट: user.save () वापसी उपयोगकर्ता    

मुझे लगता है कि लाइन में current_user_email = User.email "उपयोगकर्ता" वास्तव में एक वास्तविक उपयोगकर्ता उदाहरण नहीं है, यह एक मॉडल वर्ग है जिसे आपने मेटा में मॉडल = उपयोगकर्ता सेट करने के लिए आयात किया है। यदि आप इस फॉर्म का उपयोग केवल उपयोगकर्ता डेटा को संपादित करने के लिए करना चाहते हैं तो आपको ऐसा कुछ करना चाहिए:

urls.py urlpatterns = patterns ('project.apps.app_name.views',

  यूआरएल (आर '^ संपादित करें उपयोगकर्ता / (पी एंड LT;? pk & gt;? \ d +) / $', 'edit_user', name = 'edit_user'),)   

app_name /views.py:

  डीईएफ़ edit_user (अनुरोध, पी): user_instance = User.objects.get (पी = पी) प्रपत्र = UpdateProfile (request.POST, उदाहरण = user_instance) ... अधिक कोड ....   

और forms.py में आपको लाइन को बदलने चाहिए:

  current_user_email = User.email   

:

  current_user_email = self.instance.email   

लेकिन ऐसा करने के लिए (उचित तरीके से अगर आप Django & gt का उपयोग करें; 1.6 ) कस्टम यूजर मॉडल बनाना होगा, और ईमेल फ़ील्ड विशेषता को सेट करना होगा unique = true

Comments

Popular posts from this blog

python - how we can use ajax() in views.py in django? -

matlab - Using loops to get multiple values into a cell -

python - Sequence Pattern recognition with Pybrain -