प्रारंभ में, मैं इस तरह मेरी UserProfile शुरू कर दिया।Django एकाधिक उपयोगकर्ता प्रोफाइल
हालांकि, मेरे पास अपनी वेबसाइट, व्यक्तियों और कॉर्पोरेट में दो अलग-अलग प्रकार के उपयोगकर्ता हैं, जिनमें से प्रत्येक के अपने अद्वितीय गुण हैं। उदाहरण के लिए, मैं चाहता हूं कि मेरे व्यक्तिगत उपयोगकर्ताओं के पास केवल एक उपयोगकर्ता हो, इसलिए user = models.OneToOneField(User)
है, और कॉर्पोरेट के लिए मैं चाहता हूं कि वे एक ही प्रोफ़ाइल से संबंधित एकाधिक उपयोगकर्ता हों, इसलिए मेरे पास user = models.ForeignKey(User)
होगा।
तो मैं दो अलग अलग मॉडल, IndivProfile
और CorpProfile
में मॉडल अलग-अलग रखने, दोनों UserProfile
से इनहेरिट करते हुए प्रासंगिक उप-मॉडल में मॉडल-विशिष्ट विशेषताओं ले जाने के बारे में सोचा। मुझे एक अच्छा विचार लगता है और शायद काम करेगा, हालांकि मैं AUTH_PROFILE_MODULE
इस तरह से निर्दिष्ट नहीं कर पाऊंगा क्योंकि मेरे पास दो उपयोगकर्ता प्रोफाइल हैं जो अलग-अलग उपयोगकर्ताओं के लिए अलग होंगे।
मैं भी यह दूसरी तरह के आसपास करने के बारे में सोचा है, इस तरह कई वर्गों (मॉडल), कुछ से UserProfile
इनहेरिट होने:
class UserProfile(IndivProfile, CorpProfile):
# some field
def __unicode__(self):
return self.user.email
इस तरह से मैं AUTH_PROFILE_MODULE = 'accounts.UserProfile'
सेट और उसके समस्या का समाधान होगा। लेकिन ऐसा लगता है कि यह काम करने जा रहा है, क्योंकि पाइथन में विरासत बाएं से दाएं काम करती है और IndivProfile
में सभी चर प्रभावी होंगे।
निश्चित रूप से मैं हमेशा IndivProfile
और CorpProfile
चर के साथ एक एकल मॉडल रख सकता हूं जो सभी एक साथ मिश्रित होते हैं और फिर आवश्यकतानुसार आवश्यकतानुसार उपयोग करेंगे। लेकिन यह सिर्फ मुझे साफ नहीं दिखता है, बल्कि मैं उन्हें अलग-अलग जगह पर उपयुक्त मॉडल का उपयोग और उपयोग कर दूंगा।
के कोई सुझाव यह करने का तरीका साफ है?
[विरासत] (https://docs.djangoproject.com/en/dev/topics/db/models/#model-inheritance) के बारे में क्या? – danihp
मैं 'UserProfile' सार बना सकता हूं और' IndivProfile' और 'CorpProfile' को 'UserProfile' से प्राप्त कर सकता हूं। यह अभी भी 'AUTH_PROFILE_MODULE' के साथ इस मुद्दे को हल करने वाला नहीं है। यह किस पर इंगित करने जा रहा है? – abstractpaper
कॉर्पोरेट + व्यक्तिगत + खाता_ प्रकार फ़ील्ड को एक मॉडल में जोड़ने के बारे में कैसे? मुझे लगता है कि यह ठीक हो सकता है यदि आपके पास केवल दो प्रकार हैं, लेकिन यदि आपके पास 2 से अधिक या प्रोफ़ाइल हैं तो वे बहुत खराब हो सकते हैं। –