मैं Django में एक विस्तृत UserProfile मॉडल बनाना:एक विस्तारित उपयोगकर्ता प्रोफ़ाइल
class UserProfile(models.Model):
user = models.ForeignKey(User, unique=True)
#other things in that profile
और एक signals.py:
from registration.signals import user_registered
from models import UserProfile
from django.contrib.auth.models import User
def createUserProfile(sender, instance, **kwargs):
profile = users.models.UserProfile()
profile.setUser(sender)
profile.save()
user_registered.connect(createUserProfile, sender=User)
मुझे यकीन है कि संकेत मेरी __init__.py
में यह होने से पंजीकृत हो जाता है बनाने के :
import signals
तो मुझे रजिस्ट्रार, रिग के हर उपयोगकर्ता के लिए मुझे एक नया उपयोगकर्ता प्रोफाइल बनाना चाहिए हिंदुस्तान टाइम्स? लेकिन ऐसा नहीं है। जब मैं लॉग इन करने का प्रयास करता हूं तो मुझे हमेशा "UserProfile मिलान क्वेरी मौजूद नहीं है" त्रुटियां मिलती हैं, जिसका अर्थ है कि डेटाबेस प्रविष्टि नहीं है।
मुझे कहना चाहिए कि मैं django-पंजीकरण का उपयोग करता हूं, जो उपयोगकर्ता_registered सिग्नल प्रदान करता है।
इसके लिए महत्वपूर्ण ऐप्स की संरचना यह है कि मेरे पास "उपयोगकर्ता" नामक एक एप्लिकेशन है, मेरे पास है: models.py, signals.py, urls.py और views.py (और कुछ अन्य चीजें जो चाहिए यहाँ कोई फर्क नहीं पड़ता)। UserProfile क्लास models.py में परिभाषित किया गया है।
अद्यतन: मैं करने के लिए signals.py बदल दिया है:
from django.db.models.signals import post_save
from models import UserProfile
from django.contrib.auth.models import User
def create_profile(sender, **kw):
user = kw["instance"]
if kw["created"]:
profile = UserProfile()
profile.user = user
profile.save()
post_save.connect(create_profile, sender=User)
लेकिन अब मैं एक "IntegrityError" मिलती है:
"कॉलम user_id अद्वितीय नहीं है"
संपादित करें 2:
मुझे यह मिला। ऐसा लगता है कि मैंने सिग्नल को दो बार पंजीकृत किया था। इस के लिए वैकल्पिक हल यहाँ वर्णित है: http://code.djangoproject.com/wiki/Signals#Helppost_saveseemstobeemittedtwiceforeachsave
मैं एक dispatch_uid, अब मेरे signals.py इस तरह दिखता है जोड़ने के लिए किया था और काम कर रहा है:
from django.db.models.signals import post_save
from django.contrib.auth.models import User
from models import UserProfile
from django.db import models
def create_profile(sender, **kw):
user = kw["instance"]
if kw["created"]:
profile = UserProfile(user=user)
profile.save()
post_save.connect(create_profile, sender=User, dispatch_uid="users-profilecreation-signal")
आप संरचना अपने Django ऐप्लिकेशन पोस्ट किया जा सका। मैं आपके कोड में कुछ पंक्तियों के बारे में उत्सुक हूं जैसे 'प्रोफ़ाइल = user.models.UserProfile()' - क्या आपके पास 'उपयोगकर्ता' नामक मॉड्यूल है? UserProfile() कहां स्थित है। – czarchaic
यह उपयोगकर्ता है, मुझे नहीं पता कि उस टाइपो में कैसे मिला, लेकिन समस्या एक जैसी है। मुझे आश्चर्य है कि क्यों पाइथन ने गलत वर्तनी पथ के लिए कोई त्रुटि नहीं डाली। – Kai
इस समाधान के लिए धन्यवाद, मैं django के साथ नया हूँ, और मैं नहीं जानता कि कैसे उपयोगकर्ता प्रोफ़ाइल के बारे में दूसरों को डेटा बचाता है। मुझे लगता है कि आप उपयोगकर्ता को उपयोगकर्ता प्रोफाइल में मॉडल को सहेजते हैं, लेकिन रजिस्टर फॉर्म से अन्य डेटा (आपके signals.py का उपयोग करके) कितना बीमार है? थांस्क (अंग्रेजी के साथ खेद है) – Asinox