2011-04-04 12 views
18

मैं पाइथन/डीजेंगो सीखने की कोशिश कर रहा हूं।मैं अपने मॉडल को django में कैसे अलग कर सकता हूं?

अभी, मैं models.py में अपने मॉडल के सभी

यह अपने मॉडल बाहर टूट ताकि मैं एक अलग मॉडल फ़ोल्डर में मॉडल प्रति एक एकल फाइल हो सकता है इतना है कि मैं क्या कर सकते हैं करना संभव है कुछ की तरह:

~/MyProject/MyApp/मॉडल/user.py ~/MyProject/MyApp/मॉडल/group.py

धन्यवाद

उत्तर

30

यह संभव है, बस अपने models निर्देशिका में __init__.py में बनाए गए सभी मॉडलों को आयात करना सुनिश्चित करें। आपके मामले में, यह इस तरह दिखेगा:

# __init__.py 
from user import UserModel 
from group import GroupModel 

यह किया जाना क्योंकि Django किसी ऐप के मॉडल के लिए app.models में लग रहा है की जरूरत है।

के रूप में दूसरों से पहले 1.7 Django के संस्करणों के लिए उल्लेख किया है, आप भी अपने मॉडल में Meta कक्षा में app_label विशेषता में अपने एप्लिकेशन के नाम का उल्लेख करना होगा:

class UserModel(models.model): 
    # fields here 

    class Meta: 
     app_label = "myapp" 

http://docs.djangoproject.com/en/1.7/ref/models/options/#app-label

+1

इससे मुझे पागल हो गया, इसलिए जो लोग आते हैं, उनके लिए 1.10 में '।' से .user import UserModel 'होना चाहिए। जैसा कि यहां बताया गया है: https://docs.djangoproject.com/en/1.10/topics/db/models/#organizing-models-in-a-package –

3

आप एक फ़ोल्डर "मॉडल" कहा जाता है, लेकिन हो सकता है तो एक मॉडल कक्षा में शामिल करने के लिए की आवश्यकता होगी:

class Meta: 
    app_label="appname goes here" 

* पीएस। एक __ init__.py फ़ाइल को मत भूलना जैसा कि मैं हमेशा करता हूं। *

+0

क्या हम कुछ विरासत का उपयोग नहीं कर सकते? कक्षा मेटा के साथ कुछ base_model.py परिभाषित करें और फिर यह उस वर्ग के सभी डेरिवेटिव के लिए करना चाहिए? –

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