Django: मॉडल के लिए आयात उपयोगकर्ता


83

मुझे एक समस्या है। Django में मैंने एक नया मॉडल बनाया:

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

class Workers(models.Model):
    user = models.OneToOneField(User, primary_key=True)
        work_group = models.CharField(max_length=20)
        card_num = models.IntegerField()
    def __unicode__(self):
            return self.user

लेकिन यह काम नहीं करता है: ImportError: cannot import name user

इसे कैसे जोड़ेंगे?

इसलिए, मैं db में एक नया टेबल "वर्कर" बनाना चाहता हूं, जिसका OneToOneटेबल "Andor_user" के साथ संबंध है। धन्यवाद।

जवाबों:


194
from django.contrib.auth.models import User

आप मॉडल से चूक गए - और उपयोगकर्ता पूंजीकृत है।

यदि आप एक कस्टम उपयोगकर्ता मॉडल का उपयोग करते हैं, जिसका आपको उपयोग करना चाहिए:

from django.contrib.auth import get_user_model
User = get_user_model()

अधिक विवरण डॉक्स में पाए जा सकते हैं ।

Django में परिवर्तित 1.11:

आयात समय पर get_user_model () को कॉल करने की क्षमता जोड़ी गई।


बहुत बहुत धन्यवाद, लेकिन django के doc पर यह नहीं कहा गया है कि मॉडल docs.djangoproject.com/en/dev/ref/contrib/auth BTW पर फिर से धन्यवाद।
BlaShadow

74

यदि आप कस्टम उपयोगकर्ता मॉडल का उपयोग कर रहे हैं, तो इसे संदर्भित करने के लिए निम्न कार्य करें:

from django.contrib.auth import get_user_model
User = get_user_model()

या अगर यह विदेशी कुंजी या कई-से-कई संबंधों में उपयोग कर रहा है:

from django.conf import settings
....
user = models.ForeignKey(settings.AUTH_USER_MODEL)

डॉक्स


6
यह स्वीकृत उत्तर की तुलना में अधिक सही है क्योंकि यह अधिक पोर्टेबल है।
विल

3

AUTH_USER_MODELएक अच्छा उपाय है। यहाँ प्रश्न के अनुसार पूरा समाधान है।

from django.db import models
from django.conf import settings

class Workers(models.Model):
    user = models.ForeignKey(settings.AUTH_USER_MODEL)
    work_group = models.CharField(max_length=20)
    card_num = models.IntegerField()

    def __unicode__(self):
        return self.user.id

1

अपने कोड को सामान्य रखने के get_user_model()लिए, उपयोगकर्ता मॉडल और पुनः प्राप्त करने के लिए विधि का उपयोग करेंAUTH_USER_MODEL को मॉडल के संबंधों को परिभाषित सेटिंग का उपयोग करें, बजाय सीधे उपयोगकर्ता मॉडल के संदर्भ में उपयोगकर्ता मॉडल को परिभाषित करने के लिए।

रेफरी: उदाहरण पुस्तक द्वारा Django

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.