2012-04-14 15 views
6

मैं अपने पहले कुछ Django मॉडल लिख रहा हूं और सभी मॉडलों का विस्तार करने वाले बेस क्लास को देखना चाहता हूं (उदाहरण: "क्लास पोल (मॉडल। मॉडल") लेकिन मॉडल बेस क्लास नहीं मिला। मैंने source on github की जांच की और जब मैंने django.db.models निर्देशिका में ब्राउज़ किया तो मुझे आश्चर्य हुआ कि "Model.py" फ़ाइल नहीं मिल सका जो मैं देख सकता था। क्या यह फ़ाइल जेनरेट की गई है? या कक्षा मॉडल कहीं और रहता है? या क्या कुछ पायथन पैकेज जादू चल रहा है मैं https://github.com/django/django/blob/master/django/db/models/__init__.pyDjango स्रोत कोड में Model.py कहां है?

नज़र में?

उत्तर

5

जैसा कि पहले टिप्पणी की गई है, पाइथन जावा नहीं है। विशेष रूप से, पायथन में कुछ भी नहीं है जो कहता है कि एक वर्ग को कक्षा के समान नाम वाली फ़ाइल में रहना होगा।

San4ez बताते हैं के रूप में, django.db.models.base में Model वर्ग रहता है, और उस निर्देशिका में __init__.py फ़ाइल में आयात इतना है कि यह models.Model के रूप में सीधे संदर्भित किया जा सकता है। यह किसी भी प्रकार का जादू नहीं है, केवल सामान्य मूर्खतापूर्ण पायथन।

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

+0

मुझे आपकी मदद से मिला (जिथब खोज के लिए कोई धन्यवाद नहीं)। यह मुझे पाइथन सम्मेलनों/शैली/नियमों पर कुछ दार्शनिक प्रश्नों की ओर ले जाता है, हालांकि यह एक और पोस्ट के लिए एक प्रश्न है (और थोड़ा पृष्ठभूमि अनुसंधान भी किया गया है)। धन्यवाद! –

2

से परिचित नहीं हूँ कि

from django.db.models.base import Model 
,210

तो Model वर्ग वहाँ वर्णन किया गया है https://github.com/django/django/blob/master/django/db/models/base.py

सचमुच आप मॉडल अपनी परियोजना के लिए इस तरह से from django.db.models.base import Model आयात कर सकते हैं। लेकिन डीजेंगो कोर डेवलपर्स ने कुछ सर्विस क्लास को छिपाने का फैसला किया, कुछ को django.db.models पैकेज पर आयात किया और आपको छोटे आयात का उपयोग करने की पेशकश की।

संबंधित मुद्दे