मैं एक Django मॉडल है जो एक रूप इनपुट से उपयोगकर्ता और उत्पाद डेटा संग्रहीत करता है:Django भंडारण अनाम उपयोगकर्ता डेटा
def ProductSelection(request, template_name='product_selection.html'):
...
if user.is_authenticated():
user = request.user
else:
# deal with anonymous user info
project = Project.objects.create(
user=user,
product=form.cleaned_data["product"],
quantity=form.cleaned_data["product_quantity"],
)
बेशक इस प्रमाणीकृत उपयोगकर्ताओं के लिए ठीक है, लेकिन मैं यह भी गुमनाम स्टोर करने के लिए सक्षम होना चाहते हैं उपयोगकर्ता प्रोजेक्ट, और यदि संभव हो, तो अंततः पंजीकरण और प्रमाणीकरण करते समय उन्हें उपयोगकर्ता के साथ संबद्ध करें।
मेरा विचार अनाम उपयोगकर्ता को नाम = some_variable (एक यादृच्छिक हैश के साथ समेकित टाइमस्टैम्प?) के साथ बनाना है, फिर उस उपयोगकर्ता नाम को सत्र डेटा में सहेजें। यदि मैं सुनिश्चित करता हूं कि उस सत्र चर, यदि मौजूद है, तो उस उपयोगकर्ता की सभी परियोजनाओं की गतिविधि को रिकॉर्ड करने के लिए उपयोग किया जाता है, तो मैं पंजीकरण करते समय उपयोगकर्ता के वास्तविक प्रमाण-पत्रों के साथ परियोजनाओं को अपडेट करने में सक्षम होना चाहिए।
क्या यह अत्यधिक जटिल और भंगुर है? क्या मुझे अनावश्यक रूप से डेटा की हजारों पंक्तियों को बचाने का जोखिम है? इस आम मुद्दे के लिए इष्टतम दृष्टिकोण क्या होगा?
इस पर कोई मार्गदर्शन बहुत सराहना की जाएगी।
जब मैं अतीत में इसी तरह के मुद्दों में भाग गया, तो समस्या तब आती है जब आपको दूसरी दिशा में वापस जाने की आवश्यकता होती है। जैसे कि उपयोगकर्ताओं के पास कई परियोजनाएं हो सकती हैं, और आपको कुछ ऐसा करने की ज़रूरत है जैसे कि कौन से सत्र दो विशिष्ट परियोजनाओं को पसंद करते हैं। – JeffS
मेरे मामले में, मैं दोनों को अज्ञात उपयोगकर्ता डेटा को डीबी में संग्रहीत करना चाहता हूं और सत्रों के माध्यम से इसे एक विशिष्ट उपयोगकर्ता के साथ जोड़ना चाहता हूं। यदि 'user = request.user' अज्ञात उपयोगकर्ता ऑब्जेक्ट देता है, तो मैं पंजीकरण के बाद उपयोगकर्ता को यह जानकारी बाद में नहीं जोड़ सकता। –
उस स्थिति में, मेरा पहला उदाहरण यह करना चाहिए: 'session_key' मान को पकड़ने के लिए एक फ़ील्ड जोड़ें और बाद में आप वांछित प्रोजेक्ट इंस्टेंस को पुनर्प्राप्त कर सकते हैं और अज्ञात उपयोगकर्ता अज्ञात होने पर इसे नए उपयोगकर्ता से जोड़ सकते हैं :-) –