Django के कस्टम उपयोगकर्ता मॉडल का उपयोग (Django1.6)

मेरे पास एक Django ऐप है जिसके लिए एक अतिरिक्त क्षेत्र की आवश्यकता है (पुस्तक वर्ग में कई मैपिंग मैपिंग) और मैंने एबस्ट्रूसर को विस्तारित करके किया।

यदि आप Django के उपयोगकर्ता मॉडल से पूरी तरह से खुश हैं और आप बस कुछ अतिरिक्त प्रोफ़ाइल जानकारी जोड़ना चाहते हैं, तो आप बस django.contrib.auth.models.AbstractUser subclass कर सकते हैं और अपने कस्टम प्रोफ़ाइल फ़ील्ड जोड़ सकते हैं। यह वर्ग डिफ़ॉल्ट उपयोगकर्ता के पूर्ण कार्यान्वयन को एक अमूर्त मॉडल के रूप में प्रदान करता है।

class User(AbstractUser):
    entitledBooks = models.ManyToManyField(Book)

I added the model in my settings.py

AUTH_USER_MODEL = 'BookRServer.User'

लेकिन मैं एक उपयोगकर्ता (प्रोग्रामेटिक रूप से) कैसे बना सकता हूं?

उपयोगकर्ता = User.objects.create_user() काम नहीं करता है।

0
"काम नहीं करता" से आपका क्या मतलब है? स्टैक ट्रेस, कृपया? साथ ही, क्या आप अपने मॉडल से उपयोगकर्ता आयात कर रहे हैं? मुझे लगता है कि Django सुझाया गया तरीका उपयोगकर्ता = get_user_model() का उपयोग करना है।
जोड़ा लेखक Kimvais, स्रोत
Argh .. मुझे और अधिक स्पष्ट होना चाहिए था। मैं उपयोगकर्ता को "बना सकता हूं", लेकिन मैं "हकदार पुस्तक" में "पुस्तक" नहीं जोड़ सकता। यह कहता है "ऑब्जेक्ट उपयोगकर्ता के पास कोई विशेषता नहीं है पुस्तकें"। मैं केवल यह मान सकता हूं कि यह मूल उपयोगकर्ता बना रहा है, न कि मेरा कस्टम उपयोगकर्ता।
जोड़ा लेखक user1349663, स्रोत

2 उत्तर

सरल संभवतः, कम-से-कम युग्मित तरीका एक-से-एक संबंध उपयोगकर्ता प्रोफ़ाइल मॉडल बनाना है जिसमें आपके कई से अधिक संबंध हैं

class UserProfile(models.Model):
    user = model.OneToOneField(User)
    # your many-to-many field here


# create user
u = User(username="", password="", email="", ...)
u.save()
u.userprofile(your fields..here)
u.userprofile.save()

यह आमतौर पर सभी django संस्करणों में समान है। मूल रूप से django 1.6 बहिष्कृत एक मॉडल विधि get_profile और कुछ प्रासंगिक सेटिंग्स प्रदान करना है ..

जब तक आप वास्तव में आवश्यकताओं के अनुसार जमीन से उपयोगकर्ता मॉडल बनाना नहीं चाहते हैं, तो आपको वास्तव में AUTH_USER_MODEL का उपयोग करने की आवश्यकता नहीं है ..

उपयोगकर्ता मॉडल से उपयोगकर्ता प्रोफ़ाइल को अलग करना भी लंबे समय तक मदद करता है

0
जोड़ा
आह। AUTH_USER_MODEL के बारे में मुझे बताने के लिए धन्यवाद। लेकिन चूंकि सार तत्व प्रदान किया गया है, इसलिए मैं जानना चाहता हूं कि इसका उपयोग कैसे करें।
जोड़ा लेखक user1349663, स्रोत
हाँ, मैं समझ गया। लेकिन अब जब मैं सारबेसबेसर का उपयोग नहीं कर रहा हूं, लेकिन सार यूज़र, मुझे स्क्रैच से निर्माण करने की आवश्यकता नहीं है। और फिर भी, सामान्य विधि में उपयोगकर्ता निर्माण मेरे कस्टम एक के बजाय डिफ़ॉल्ट उपयोगकर्ता बनाता है।
जोड़ा लेखक user1349663, स्रोत
django दस्तावेज़ देखें, जो सबसे अच्छी तरह से समझाया गया है।
जोड़ा लेखक Surya, स्रोत
AUTH_USER_MODEL का उपयोग करके आप मानते हैं कि आप अपनी सारी चीजें खरोंच से बना रहे हैं और कुछ भी नहीं .. इन वर्गों की देखभाल करने के कुछ छोटे सुरक्षा उपाय हैं .. जब आप से बना रहे हैं तो उस कोड को देखें खरोंच
जोड़ा लेखक Surya, स्रोत

Create_user प्रबंधक विधि केवल तीन तर्क, उपयोगकर्ता नाम, ईमेल (वैकल्पिक), और पासवर्ड (वैकल्पिक) स्वीकार करता है।

आप ऐसा कर सकते हैं:

bookset=Book.objects.all()
user = User.objects.create_user('testuser',email='[email protected]')
user.entitledBooks=bookset
user.save()
0
जोड़ा
मैंने user.entitledBooks.add का उपयोग किया, लेकिन हाँ, मुझे उपयोगकर्ता ऑब्जेक्ट बनाना था और फिर इसमें अतिरिक्त फ़ील्ड जोड़ना था। तो मैं यह जवाब स्वीकार करूंगा।
जोड़ा लेखक user1349663, स्रोत