Как я полностью сбрасываю своего Django (1,2 альфы) DB (отбрасывающий все таблицы, вместо того, чтобы просто очистить их)?
manage.py flush
делает слишком мало (не будет работать, если будут изменения схемы), и manage.py reset
требует, чтобы я определил все приложения (и, кажется, берет формат, который отличается от просто "" .join (INSTALLED_APPS)). Я могу, очевидно, достигнуть этого в особенном методе DB, но я полагал, что должен быть нормальный, агностик бэкенда DB способ сделать это.
[Редактирование: я ищу что-то, что я могу назвать из сценария, например, Make-файла, и это продолжает работать, если я изменяю DB бэкенда или добавляю к settings.INSTALLED_APPS
]
Этот сниппет дает вам код команды manage.py reset_db
, которую вы можете установить, это минимальное изменение, которое решит вашу проблему
Тем не менее, из комментариев ниже:
С таким же успехом вы можете просто установить командные расширения Django, чтобы получить reset_db и другие полезности: https://github.com/django-extensions/django-extensions
Просто назначьте новую базу данных и удалите эту базу данных из консоли базы данных. Как мне кажется, самый простой.
Вы хотите sqlreset
:
% python manage.py help sqlreset
Usage: manage.py sqlreset [options] <appname appname ...>
Prints the DROP TABLE SQL, then the CREATE TABLE SQL, for the given app name(s).
Options:
-v VERBOSITY, --verbosity=VERBOSITY
Verbosity level; 0=minimal output, 1=normal output,
2=all output
--settings=SETTINGS The Python path to a settings module, e.g.
"myproject.settings.main". If this isn't provided, the
DJANGO_SETTINGS_MODULE environment variable will be
used.
--pythonpath=PYTHONPATH
A directory to add to the Python path, e.g.
"/home/djangoprojects/myproject".
--traceback Print traceback on exception
--version show program's version number and exit
-h, --help show this help message and exit
Как и при изменении модели, Django не будет автоматически делать это за вас. Он только выведет команды для копирования и вставки.
Не уверенный, что вы хотите, но смотрите на эти события для ContextMenu
и MenuItem
:
ContextMenu
:
http://msdn.microsoft.com/en-us/library/system.windows.controls.contextmenu_events.aspx
MenuItem
:
http://msdn.microsoft.com/en-us/library/system.windows.controls.menuitem_events.aspx
я думаю ContextMenuOpening
и , ContextMenuClosing
мог бы быть интересным;)
Hm, может быть, вы лжете manage.py, делая вид, что делают приспособления, но только для поиска приложений:
apps = $ (python manage.py makefixture 2 > & 1 | egrep -v '(^ Ошибка | ^ django)' | awk -F. «{print $2}» | uniq); для i в приложениях $; do python manage.py sqlreset $ i; done | grep DROP
Выводит список инструкций DROP TABLE для всех таблиц приложений проекта, исключая таблицы django. Если вы хотите включить их, удалите | ^ django
образцов vom egrep.
Но как подать правильный бэкэнд базы данных? sed/awk-ing через settings.conf? Или лучше, используя небольшой settings.conf-чтение python скрипт сам.
посмотрите на команду reset в коде django и напишите свою собственную, которая сначала сбрасывает/создает DB.