2010-10-14 8 views

Odpowiedz

4

Można użyć interfejsu administratora, z powłoki lub skrypty (jeśli szukasz automatycznego rozwiązania). Oto jak to zrobić z powłoki (i co należy umieścić w skrypcie):

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

mojego zrozumienia jest to, że urządzenia są preferowanym sposobem osiągnięcia tego celu. Zobacz odpowiedź @ Askell poniżej. – Josh

5

Jeśli chcesz to zrobić automatycznie, spróbuj tego

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) 

Ten kod musi zostać uruchomiony, gdy wykonywane jest polecenie zarządzania. Możesz więc umieścić ją w dowolnej aplikacji na stronie management/__init__.py. Następnie dodaj SITE_ID, SITE_NAME i SITE_DOMAIN do swojego settings.py.

35

Prostym rozwiązaniem jest utworzenie urządzenia initial_data.json dla aplikacji Witryny, które zastąpi wartość domyślną.

Na przykład, moja Oprawa na /myproject/myapp/fixtures/initial_data.json:

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

Mała uwaga: Ponieważ jest to wspólne dane dla całego projektu, to może być dobry pomysł, aby zapisać urządzenie do/myproject/fixtures/lub do aplikacji/myproject/commons/(tak jak ja) zamiast przechowywać je z tylko niektóre aplikacje. Dzięki temu dane są łatwe do znalezienia i sprawiają, że aplikacje stają się bardziej dostępne do ponownego użytku.

Druga uwaga: Django pozwala używać wielu urządzeń initial_data.json w wielu aplikacjach (używanie mieszanego zestawu urządzeń initial_data.json i initial_data.yaml nie działało zgodnie z oczekiwaniami: P). Wszystkie zostaną automatycznie użyte do wstępnego wypełnienia bazy danych po uruchomieniu syncdb.

Niektóre referencje:

Powiązane problemy