Django

2012-03-12 5 views
5

में auth_user तालिका में कस्टम फ़ील्ड जोड़ना वर्तमान में मैंने अपने कस्टम कॉलम (जैसे पता और फोन नंबर) के साथ MyAppUser नामक एक और कक्षा/तालिका बनाई है जिसमें Django के प्रमाणीकरण User के लिए एक विदेशी कुंजी है।Django

कुछ इस

from django.db import models 
from django.contrib.auth.models import User 

class MyAppUser(models.Model) : 
    def __unicode__(self) : 
     return self.user.username 

    user = models.ForeignKey(User) 
    comment = models.TextField(blank = True) 
    phone = models.CharField(max_length = 135, blank = True) 

तरह उपरोक्त विधि एक अच्छा अभ्यास है? या मुझे auth_user को सीधे संशोधित करने का प्रयास करना चाहिए? और यदि हां, तो मैं यह कैसे करूँगा?

बोनस प्रश्न: क्या मेरी कस्टम तालिका दोनों को User कहा जा सकता है? मैंने from django.contrib.auth import models को आजमाने के बारे में सोचा, फिर models.User पर कॉल किया, लेकिन फिर मुझे लगता है कि django.db.models के साथ भी संघर्ष होगा। शायद मुझे from django.contrib.auth.models import User as AuthUser आज़माएं? यह एक अच्छा विचार है?

उत्तर

8

Django उपयोगकर्ता को अपनी संपत्तियों के साथ विस्तारित करने के लिए अंतर्निहित समर्थन प्रदान करता है, जिसे User Profiles कहा जाता है। इसे सेट अप करने का एक अच्छा त्वरित अवलोकन here रेखांकित किया गया है।

+0

डीजेंगो दस्तावेज़ अपडेट किया गया है। तो 'उपयोगकर्ता प्रोफाइल' का लिंक https://docs.djangoproject.com/en/1.4/topics/auth/#storing-additional-information-about-users – crossin

+0

लिंक 502 लौटाता है :( –

1

आम तौर पर यह तरीका है जो मैं पसंद करता हूं, मैं Django उपयोगकर्ता को सुरक्षित होने के लिए स्पर्श नहीं करना चाहता हूं। इस तरह आप जानते हैं कि आप उपयोगकर्ता मॉडल में किसी भी चीज़ के साथ संघर्ष नहीं करेंगे, और यह स्पष्ट करता है कि कौन सा कोड ढांचा कोड है और आपका कोड कौन सा है।

मैं आमतौर पर इसे MyAppUser पर कॉल नहीं करता लेकिन आमतौर पर UserSettings जैसे कुछ। मैं नहीं चाहता कि मेरे उपयोगकर्ता से संबंधित वर्ग User ऑब्जेक्ट के प्रतिस्थापन के रूप में उलझन में हों, लेकिन अधिक जानकारी प्रदान करें।

आम तौर पर ऐप्स में आपके पास User पर सभी जगहों पर विदेशी कुंजी होगी, इसलिए मैं अभी भी उन सभी के लिए Django User कक्षा का उपयोग करता हूं। मुझे लगता है कि यह चीजों को साफ रखता है।

मैंने User को उपclass करने का प्रयास किया है और पाया है कि यह मुझे बहुत कुछ नहीं दे रहा है, और भ्रमित चीजों को समाप्त कर दिया है, जितना आवश्यक होना चाहिए उससे ज्यादा।