/ / Django - अनुरोध से उपयोगकर्ता प्रॉक्सी मॉडल - django, django- मॉडल

Django - अनुरोध से उपयोगकर्ता प्रॉक्सी मॉडल - django, django-model

मैं एक प्रॉक्सी मॉडल का उपयोग करता हूं User पसंद

class Nuser(User):
class Meta:
proxy = True
def __unicode__(self):
return u"%s %s" % (self.first_name, self.last_name)

मैं इसका उपयोग अपने विचारों में करता हूं।
मैं इस वस्तु के उदाहरण के लिए सबसे अच्छा तरीका सोच रहा था request.user

हर बार करता हूं

Nuser.objects.get(pk=request.user.pk)

क्या यह करने का एक सरल तरीका नहीं है?

उत्तर:

उत्तर № 1 के लिए 10

आप एक कस्टम प्रमाणीकरण बैकएंड लिख सकते हैं जो आपके प्रॉक्सी मॉडल के इंस्टेंस को बदले देता है User उदाहरण:

from django.contrib.auth.backends import ModelBackend

class ProxiedModelBackend(ModelBackend):
def get_user(self, user_id):
try:
return Nuser.objects.get(pk=user_id)
except Nuser.DoesNotExist:
return None

आपके में settings.py

AUTHENTICATION_BACKENDS = ["my_project.auth_backends.ProxiedModelBackend",]

जवाब के लिए 0 № 2

Django वापसी के लिए कोई रास्ता नहीं है, कहते हैं, एक MyNurse जब भी आप क्वेरी करें तो ऑब्जेक्ट Nurse वस्तुओं। के लिए एक क्वेरी Nurse वस्तुएं उन प्रकार की वस्तुओं को लौटाएंगी। प्रॉक्सी ऑब्जेक्ट्स का संपूर्ण बिंदु वह कोड है जो मूल पर निर्भर करता है Nurse उन लोगों का उपयोग करेगा और आपका अपना कोड आपके द्वारा शामिल एक्सटेंशन का उपयोग कर सकता है (यह कि कोई अन्य कोड किसी भी तरह से निर्भर नहीं है)। यह एक तरीका नहीं है Nurse (या कोई अन्य) अपने स्वयं के निर्माण के साथ हर जगह मॉडल।