2012-11-14 8 views
5

क्या Django मॉडल हैशबल उदाहरण हैं? उदाहरण के लिए, क्या मैं एक डैंजो मॉडल उदाहरण को एक शब्दकोश कुंजी के रूप में उपयोग कर सकता हूं, या अद्वितीय मॉडल का सेट बना सकता हूं?क्या Django मॉडल हैशबल उदाहरण हैं?

यदि वे हैशबल हैं, तो दो Django मॉडल उदाहरणों को क्या माना जाता है? क्या यह हैशबल को निष्क्रिय रूप से कार्यान्वित करता है जैसे कि यह केवल उन्हें समान मानता है यदि वे स्मृति में एक ही पायथन ऑब्जेक्ट हैं, या क्या यह मॉडल उदाहरण के मान का किसी भी तरीके से उपयोग करता है?

+3

क्या आपने ऐसा करने का प्रयास किया? आपको क्या मिला? इसके अलावा, * क्यों * आप उन्हें बनना चाहते हैं, आप क्या हासिल करने की कोशिश कर रहे हैं? –

+5

http://stackoverflow.com/questions/7042530/django-is-it-reasonable-to-use-objects-as-dictionary-keys –

+0

से संबंधित/डुप्लिकेट मुझे एक ही स्थान पर एक वस्तु के रूप में कुंजी की आवश्यकता है I dict के मूल्य की आवश्यकता है, यह आश्चर्यजनक रूप से काम करता है। इसके अलावा, जैसा कि @VajkHermecz ने कहा, यह एक डुप्लिकेट सवाल है, और अधिक जानकारी है। – pablete

उत्तर

9

मॉडल उदाहरण हैंशबल हैं। उन्हें समान माना जाता है यदि वे एक ही प्रकार के मॉडल हैं और समान प्राथमिक कुंजी हैं। आप यह defined in django.db.models.base देख सकते हैं:

class Model(object): 

    ... 

    def __hash__(self): 
     return hash(self._get_pk_val()) 

    ... 

    def __eq__(self, other): 
     return isinstance(other, self.__class__) and \ 
       self._get_pk_val() == other._get_pk_val()