मैं एक प्रॉक्सी मॉडल का उपयोग करता हूं 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
(या कोई अन्य) अपने स्वयं के निर्माण के साथ हर जगह मॉडल।