tôi muốn cư django_site bảng khi tôi chạy sau syncdb ban đầu làm thế nào tôi có thể làm điều đó tôi có một trang web chỉauto populate khi syncdb với vật cố cho django chỗ
Trả lời
Bạn có thể sử dụng giao diện quản trị, từ vỏ, hoặc kịch bản nó (nếu bạn đang tìm kiếm một giải pháp tự động). Dưới đây là làm thế nào để làm điều đó từ vỏ (và những gì bạn sẽ đưa vào kịch bản):
[[email protected] projects]$ python manage.py shell
>>> from django.contrib.sites.models import Site
>>> newsite = Site(name="Test",domain="test.com")
>>> newsite.save()
Nếu bạn muốn làm điều này tự động, hãy thử này
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)
Đó là mã cần phải được chạy bất cứ khi nào một lệnh quản lý được thực hiện. Vì vậy, bạn có thể đặt nó trong management/__init__.py
cho bất kỳ ứng dụng nào. Sau đó, chỉ cần thêm SITE_ID
, SITE_NAME
và SITE_DOMAIN
vào số settings.py
của bạn.
Giải pháp đơn giản là tạo lịch thi đấu initial_data.json cho ứng dụng Sites sẽ ghi đè mặc định.
Ví dụ, vật cố của tôi tại /myproject/myapp/fixtures/initial_data.json:
[
{
"model": "sites.site",
"pk": 1,
"fields": {
"domain": "myproject.mydomain.com",
"name": "My Project"
}
}
]
Một lưu ý nhỏ: Vì đây là dữ liệu chung cho toàn bộ dự án, nó có thể là một ý tưởng tốt để lưu trữ fixture to/myproject/fixtures/hoặc một ứng dụng/myproject/commons/(như tôi) thay vì lưu trữ nó với chỉ một số ứng dụng. Điều này giúp dữ liệu dễ tìm và giúp các ứng dụng trở nên tái sử dụng được nhiều hơn một chút.
Lưu ý thứ hai: Django cho phép sử dụng nhiều đồ đạc initial_data.json trong nhiều ứng dụng (Sử dụng bộ hỗn hợp các đồ đạc initial_data.json và initial_data.yaml không hoạt động như mong đợi: P). Tất cả chúng sẽ được tự động sử dụng để điền trước cơ sở dữ liệu khi syncdb được chạy.
Một số tài liệu tham khảo:
- Django - Providing initial data with fixtures
- Các bình luận thứ hai tại a codespatter.com blog post
- 1. Tên tùy chỉnh Django syncdb cho bảng
- 2. Lỗi trong khi syncdb của django trên máy chủ
- 3. Django syncdb không làm bảng cho ứng dụng của tôi
- 4. Populate PHP Array từ khi Loop
- 5. Mongoose populate
- 6. Mô hình Django không hiển thị trong DB sau syncdb
- 7. Django không tìm thấy ứng dụng trong virtualenv khi sử dụng manage.py syncdb
- 8. Làm thế nào để xác định tên lược đồ trong khi chạy "syncdb" trong django?
- 9. Django tránh tạo PointField trong cơ sở dữ liệu khi tôi chạy python manage.py syncdb
- 10. Không thể syncdb trong GeoDjango App
- 11. Tại sao celery_taskmeta và các bảng khác không được tạo khi chạy syncdb trong django?
- 12. Populate Drop Down trong MFC
- 13. Django/Python Beginner: Lỗi khi thực thi python manage.py syncdb - psycopg2 không tìm thấy
- 14. "settings.DATABASES được cấu hình không đúng" lỗi thực hiện syncdb với django 1.4
- 15. jquery populate chọn danh sách
- 16. Spring MVC Pre Populate Checkboxes
- 17. IntegrityError khi tải cố định trong django thử nghiệm
- 18. Django Model Auto Increment Primary Key Dựa trên khóa ngoài
- 19. Khi không sử dụng `auto &&`?
- 20. Tại sao tôi gặp lỗi này khi tôi chạy "python manage.py syncdb --all"?
- 21. Bắt đối tượng 'DatabaseOperations' không có thuộc tính lỗi 'geo_db_type' khi làm một syncdb
- 22. Sự cố khi nhập tệp trong Django settings.py
- 23. TMemo với Auto Show/Hide Scrollbars
- 24. lỗi WSGIServer khi cố gắng chạy Django app
- 25. Django - Sử dụng admindocs Auto-Tạo Tài liệu cho luật riêng
- 26. không thể tạo siêu người dùng sau syncdb
- 27. django auto sên trong các hình thức mô hình như prepopulated-trường trong django quản trị
- 28. Kiểm tra lập trình nếu syncdb đang chạy
- 29. Auto đăng nhập với FBConnect trên iphone
- 30. PyCharm: Làm thế nào để chạy lệnh syncdb và sql?
sự hiểu biết của tôi là đồ đạc là cách ưa thích để làm điều này. Xem câu trả lời của @ Askell dưới đây. – Josh