quiero poblar django_site mesa cuando corro después syncdb inicialmente ¿cómo puedo hacer que tengo un sitio sóloRellenar automáticamente cuando syncdb con el accesorio de Django in situ
Respuesta
También se puede usar la interfaz de administración, desde el shell o guión (si está buscando una solución automatizada). Aquí es cómo hacerlo de la cáscara (y lo que se pone en el guión):
[[email protected] projects]$ python manage.py shell
>>> from django.contrib.sites.models import Site
>>> newsite = Site(name="Test",domain="test.com")
>>> newsite.save()
Si usted quiere hacer esto automáticamente, intente esto
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)
Ese código debe ejecutarse cada vez se ejecuta un comando de gestión. Entonces puedes ponerlo en management/__init__.py
para cualquier aplicación. A continuación, solo agregue SITE_ID
, SITE_NAME
y SITE_DOMAIN
en su settings.py
.
La solución simple es crear un accesorio initial_data.json para la aplicación Sites que anulará el valor predeterminado.
Por ejemplo, mi accesorio en /myproject/myapp/fixtures/initial_data.json:
[
{
"model": "sites.site",
"pk": 1,
"fields": {
"domain": "myproject.mydomain.com",
"name": "My Project"
}
}
]
Una pequeña nota: Debido a que este es de datos común para todo el proyecto, podría ser una buena idea para almacenar el accesorio a/myproject/fixtures/o a una aplicación/myproject/commons/(como yo) almacenando en su lugar con solo alguna aplicación. Esto permite que los datos sean fáciles de encontrar y hace que las aplicaciones sean un poco más reutilizables.
Una segunda nota: Django permite usar varios accesorios initial_data.json en varias aplicaciones (Sin embargo, el uso del conjunto mixto de datos initial_data.json y initial_data.yaml no funcionó como se esperaba: P). Todos ellos se usarán automáticamente para rellenar previamente la base de datos cuando se ejecute syncdb.
Algunas referencias:
- Django - Providing initial data with fixtures
- El segundo comentario en a codespatter.com blog post
- 1. Procesamiento in situ con grep
- 2. ¿Filtrado de archivos in situ con Ant?
- 3. Rotación de matriz in situ
- 4. PHP CMS con potente edición in situ?
- 5. Django syncdb y migrar
- 6. Ejecutando código Javascript "in situ" en Chrome?
- 7. Edición in situ de texto en UITableViewCell?
- 8. modificaciones de cadenas "in situ" en Python
- 9. ¿Decodificación de longitud de ejecución in situ?
- 10. syncdb de Django falla con MySQL Error: 150
- 11. edición in situ en Rails 3
- 12. Edite un archivo in situ en vim
- 13. Django syncdb conflictivo related_name cuando se usa herencia y ForeignKey
- 14. Django no encuentra aplicaciones en virtualenv cuando usa manage.py syncdb
- 15. ¿Cómo pones un archivo en un accesorio en Django?
- 16. Es imprescindible Quicksort in situ (en el lugar) o no?
- 17. Pyramid equivalente al comando syncdb de Django?
- 18. Error durante syncdb de django en el servidor
- 19. Busca un editor de HTML in-situ basado en jQuery
- 20. ¿Cómo puedo realizar `syncdb --noinput` de Django con call_command?
- 21. Tipo de arreglo de byte rápido in situ
- 22. (actualizaciones in situ) CouchDB documento de actualización Manipuladores
- 23. ¿Cómo cargar el accesorio sql en Django para el modelo de Usuario?
- 24. ¿Es posible realizar una fusión in situ sin almacenamiento temporal?
- 25. Django syncdb nombre personalizado para la tabla
- 26. TypeError generado al usar operaciones in situ en matrices numpy?
- 27. ¿Hay un equivalente in situ para 'mapa' en python?
- 28. Django ras vs sqlclear y syncdb
- 29. IntegrityError al cargar accesorio durante las pruebas de Django
- 30. ¿Por qué celery_taskmeta y otras tablas no se crean cuando se ejecuta un syncdb en django?
Mi entendimiento es que los accesorios son la forma preferida de hacer esto. Vea la respuesta de @ Askell a continuación. – Josh