2013-02-27 17 views
14

में कस्टम उपयोगकर्ता मॉडल का उपयोग करने के जब मैं Django में कस्टम उपयोगकर्ता मॉडल से संबंधित प्रश्न है 1.5Django 1.5

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

तो, इस परिदृश्य को लागू करने का सबसे अच्छा तरीका क्या है?

क्या मुझे प्रोफ़ाइल नामक एक नया ऐप बनाना है और सारबेसबेस उपयोगकर्ता प्राप्त करना है? और models.py पर अपना कस्टम वैरिएबल जोड़ें? मेरे लिए पालन करने के लिए कोई अच्छा उदाहरण?

अग्रिम

+0

आप डेटाबेस अनुकूलन के बारे में worring नहीं कर रहे हैं आप अतिरिक्त प्रोफ़ाइल मॉडल बनाने और से उपयोगकर्ता मॉडल के लिए एक-से-एक संबंध बना सकते हैं django.contrib.auth.models। Django 1.5 में परिवर्तन आपको कस्टम उपयोगकर्ता मॉडल बनाने की अनुमति देता है, इस मामले में मॉडल 1 डेटाबेस तालिका से मेल खाता है। एक विशेष पृथक एप्लिकेशन बनाने के लिए जरूरी नहीं है, आप मॉडल को कुछ सामान्य मॉडलों में जोड़ सकते हैं। लेकिन अगर आप चाहते हैं, तो आप कर सकते हैं। – sergzach

उत्तर

27

में धन्यवाद आप AbstractUser करने के लिए अपने उपयोगकर्ता मॉडल बढ़ाने और अपने अतिरिक्त फ़ील्ड जोड़ना चाहते हैं। AbstractUser सभी मानक उपयोगकर्ता प्रोफ़ाइल फ़ील्ड को विरासत में मिला है, जबकि AbstractBaseUser आपको उन फ़ील्ड के बिना स्क्रैच से शुरू करता है।

रिलीज के करीब यह सर्वोत्तम प्रथाओं को परिभाषित करना मुश्किल है, लेकिन ऐसा लगता है कि जब तक आपको उपयोगकर्ता मॉडल को बड़े पैमाने पर परिभाषित करने की आवश्यकता नहीं है, तो आपको AbstractUser का उपयोग करना चाहिए जहां संभव हो।

Here are the docs for extending the User model using AbstractUser

आपका models.py तो कुछ इस तरह दिखेगा:

class MyUser(AbstractUser): 
    gender = models.DateField() 
    location = models.CharField() 
    birthday = models.CharField() 

MyUser तो मानक ईमेल, पासवर्ड, उपयोगकर्ता नाम, आदि क्षेत्रों है कि उपयोगकर्ता मॉडल के साथ आते हैं, और अपने तीन अतिरिक्त होगा उपरोक्त फ़ील्ड

तो फिर तुम जोड़ने की जरूरत है AUTH_USER_MODEL अपने settings.py रहे हैं:

AUTH_USER_MODEL = 'myapp.MyUser'

+1

अच्छा जवाब, अभी तक नई विधि के आसपास नहीं मिला है - pinboarded। :-) – Matt

+1

धन्यवाद महान और सूचनात्मक प्रतिक्रिया के लिए श्री हॉर्स्ट। :) – Iqbal

+0

जबकि मैं उपयोगकर्ता बना रहा हूं मुझे यह त्रुटि मिली: 'प्रबंधक उपलब्ध नहीं है; उपयोगकर्ता को 'myapp.MyUser' – suhailvs

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