chcę wypełnić django_site stolik, kiedy biegnę po syncdb początkowo w jaki sposób można to zrobić mam jedno miejsce tylkoauto Populate gdy syncdb z uchwytem dla Django miejscu
Odpowiedz
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()
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
.
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:
- Django - Providing initial data with fixtures
- Drugi komentarz w a codespatter.com blog post
- 1. Django niestandardowa nazwa syncdb dla tabeli
- 2. Django - syncdb nie tworzy tabel
- 3. Przeciągnij upuść z uchwytem
- 4. nieświeży typy zawartości podczas syncdb w Django
- 5. syncdb Django nie działa z MySQL errno: 150
- 6. "settings.DATABASES jest nieprawidłowo skonfigurowany" błąd wykonywania syncdb z django 1.4
- 7. W django, jak wywołać podkomendę "syncdb" ze skryptu inicjującego?
- 8. Mongoose populate
- 9. Jak określić nazwę schematu podczas działania "syncdb" w django?
- 10. stanie stworzyć superużytkownika po syncdb
- 11. Zwróć określone pola z .populate() z Mongoose
- 12. Modele Django nie są wyświetlane w DB po Syncdb
- 13. Django pobierz instrukcję syncdb sqlall, aby zaktualizować po zmianach kodu.
- 14. jquery Populate lista wyboru
- 15. Mongoose populate embedded
- 16. Django: Dostaję [relację "auth_group" nie istnieje] error after syncdb
- 17. ASP.NET MVC + Populate DropdownList
- 18. Pobranie procesu z danym uchwytem procesu
- 19. Populate drzewa przy użyciu danych z ArrayCollection
- 20. Jquery - Populate DropDown Box z zawartością tablicy
- 21. lista Populate z samego obiektu skutecznie
- 22. PyCharm: Jak uruchamiać polecenia syncdb i sql?
- 23. Django: tworzenie niestandardowego auto-inkrementacji PK?
- 24. Django auto spadu w modelu formy takie jak oznakowane pól w Django administratora
- 25. Auto Increment dla Oracle
- 26. Populate Odbiór Struts2 formularzu zgłoszeniowym
- 27. Django i South: używanie south powoduje, że syncdb show myapp nie jest zsynchronizowany (używaj migracji).
- 28. Automatyczne przewijanie do dołu, gdy przepełnienie auto
- 29. Dodawanie const-ności do nieprzezroczystego uchwytem
- 30. Django Model Auto Increment Klucz podstawowy oparty na kluczu obcym
mojego zrozumienia jest to, że urządzenia są preferowanym sposobem osiągnięcia tego celu. Zobacz odpowiedź @ Askell poniżej. – Josh