В основном мы не пишем SQL (например, создаем индекс, создаем таблицы и т. Д.) Для наших моделей, а вместо этого полагаемся на Django, чтобы сгенерировать его для нас.
Совершенно нормально начинать с разработки вашего приложения на уровне модели, поскольку вы можете положиться на Django для создания нужной базы данных sql, необходимой вам.
Однако Django предоставляет различные функциидля репликации этих функций базы данных:
- триггеры: код Django или триггеры MySQL
- индексы: можно указать с помощью
db_index=True
- уникальные ограничения:
unique = True
или unique_togther = (('field1', field2'),)
для составного уникального ограничения.
Преимущество использования Django вместо написания sql состоит в том, что вы абстрагируетесь от конкретной базы данных, которую вы используете.Другими словами, вы можете быть на SQLite
один день и переключиться на PostgresQL
или MySQL
на следующий, и изменение будет относительно безболезненным.
Пример:
Когда вы запускаете это:
python manage.py syncdb
Django автоматически создает таблицы, индексы, триггеры и т. Д., Он должен поддерживать созданные вами модели.Если вам не нравится, когда django создает вашу базу данных, вы всегда можете использовать:
python manage.py sqlall
. Это выведет на экран SQL-операторы, которые Django должен будет иметь для правильного функционирования своих моделей.Существуют и другие команды sql
, которые вы можете использовать:
см .: https://docs.djangoproject.com/en/1.3/ref/django-admin/#sql-appname-appname