2012-12-20 36 views
6

साथ मॉडल को बचाने मैं एक Django मॉडल है (जिसे मैं बाद में अपडेट कर सकता हूं)।Django अनाम उपयोगकर्ता

ValueError: Cannot assign "<django.utils.functional.SimpleLazyObject object at 0x1b498d0>": "Project.user" must be a "User" instance. 

मुझे लगता है कि Django AnonymousUser नहीं की बचत होगी, क्योंकि यह एक उपयोगकर्ता के रूप में User मॉडल में परिभाषित नहीं है: हालांकि, अगर मैं में लॉग इन नहीं कर रहा हूँ मैं इस त्रुटि मिलती है। क्या मुझे अनाम उपयोगकर्ता को User मॉडल में जोड़ने की ज़रूरत है, या क्या मुझे कुछ याद आ रहा है?

किसी भी सहायता की बहुत सराहना की।

उत्तर

9

user फ़ील्ड ForeignKey है। इसका मतलब है कि इसे कुछ उपयोगकर्ता संदर्भित करना होगा।

परिभाषा के अनुसार, AnonymousUserहै कोई उपयोगकर्ता: Django में, कोई AnonymousUserA और AnonymousUserB। वे सभी समान हैं: AnonymousUser

निष्कर्ष: आप AnonymousUser को UserForeignKey में नहीं डाल सकते हैं।


आपकी समस्या का हल है, हालांकि बिल्कुल स्पष्ट है: जब User अनाम है, बस क्षेत्र को खाली छोड़ दें। ऐसा करने के लिए, आपको इसे अनुमति देने की आवश्यकता होगी:

user = models.ForeignKey(User, blank = True, null = True) 
+0

ठीक है, बढ़िया। तो अगर मैं 'अज्ञात उपयोगकर्ता' पर 'user = request.user' करता हूं तो फ़ील्ड खाली हो जाएगी और कोई अपवाद नहीं उठाया जाएगा? –

+0

एक अपवाद उठाया जाएगा क्योंकि आपने फ़ील्ड में अनुचित डेटा प्रदान किया है। बस अगर अनुरोध करें .user.is_authenticated(): project.user = request.user' –

+0

क्या मुझे 'नल-ट्रू' भी जोड़ना है, क्योंकि फ़ील्ड 'शून्य' नहीं हो सकता है? –