2010-10-14 9 views

उत्तर

4

आप व्यवस्थापक इंटरफ़ेस का उपयोग कर सकते हैं या तो कर सकते हैं syncdb होने लग जाते हैं django_site तालिका पॉप्युलेट करने के लिए, से चाहते हैं के लिए स्थिरता के साथ syncdb खोल, या स्क्रिप्ट (यदि आप एक स्वचालित समाधान की तलाश में हैं)। यह इस प्रकार से खोल से ऐसा करने के लिए (और क्या आप स्क्रिप्ट में डाल दिया होगा) है:

[[email protected] projects]$ python manage.py shell 
>>> from django.contrib.sites.models import Site 
>>> newsite = Site(name="Test",domain="test.com") 
>>> newsite.save() 
+2

मेरे समझ के साथ कि जुड़नार ऐसा करने का पसंदीदा तरीका हो रहा है। नीचे @ Askell का जवाब देखें। – Josh

5

आप स्वचालित रूप से ऐसा करना चाहते हैं, इस

from django.contrib import sites 
from django.db.models import signals 
from django.conf import settings 

def create_site(app, created_models, verbosity, **kwargs): 
    """ 
    Create the default site when when we install the sites framework 
    """ 
    if sites.models.Site in created_models: 
     sites.models.Site.objects.all().delete() 

     site = sites.models.Site() 
     site.pk = getattr(settings, 'SITE_ID', 1) 
     site.name = getattr(settings, 'SITE_NAME', 'Example') 
     site.domain = getattr(settings, 'SITE_DOMAIN', 'example.com') 
     site.save() 

signals.post_syncdb.connect(create_site, sender=sites.models) 

कि कोड जब भी चलाने के लिए की जरूरत है की कोशिश एक प्रबंधन कमांड निष्पादित किया जाता है। तो आप इसे किसी भी ऐप के लिए management/__init__.py में डाल सकते हैं। तो बस अपने settings.py करने के लिए SITE_ID, SITE_NAME, और SITE_DOMAIN जोड़ें।

35

सरल समाधान है कि डिफ़ॉल्ट स्थान पर आ जाएगी साइटें अनुप्रयोग के लिए एक initial_data.json स्थिरता बनाने के लिए है।

उदाहरण के लिए

, /myproject/myapp/fixtures/initial_data.json में मेरी स्थिरता:

[ 
    { 
    "model": "sites.site", 
    "pk": 1, 
    "fields": { 
     "domain": "myproject.mydomain.com", 
     "name": "My Project" 
    } 
    } 
] 

एक छोटी सी टिप्पणी: क्योंकि यह पूरी परियोजना के लिए आम डेटा है, यह एक अच्छा विचार स्टोर करने के लिए हो सकता है/MyProject/फिक्स्चर/या करने के लिए किसी एप्लिकेशन/MyProject/कॉमन्स साथ/(जैसे मैं करता हूँ) के बजाय भंडारण बस कुछ अनुप्रयोग के लिए स्थिरता। यह डेटा को ढूंढना आसान बनाता है और ऐप्स को थोड़ा और पुन: प्रयोज्य बनाता है।

एक दूसरा नोट: Django एकाधिक ऐप्स में एकाधिक प्रारंभिक_डेटा.जेसन फिक्स्चर का उपयोग करने की अनुमति देता है (प्रारंभिक_डाटा.जेसन और प्रारंभिक_डाटा.यामएल फिक्स्चर के मिश्रित सेट का उपयोग करने के रूप में अपेक्षित काम नहीं किया गया है: पी)। सिंकडब चलाए जाने पर वे सभी डेटाबेस को पूर्व-पॉप्युलेट करने के लिए स्वचालित रूप से उपयोग किए जाएंगे।

कुछ संदर्भों:

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