仅刷新一个应用而非整个项目
python manage.py flush
这个命令会清空整个项目中的数据。我想要能够只清空某个特定应用的数据,比如用 python manage.py flush agivenapp
这样的命令。我该怎么做呢?
4 个回答
13
你可以使用 migrate
命令来完成这个操作,这个命令需要两个参数:
这个命令的作用是更新数据库的结构。它可以管理那些有迁移记录的应用和没有迁移记录的应用。
参数说明:
app_label
这是你要同步状态的应用的标签。
migration_name
数据库的状态会被更新到这个迁移之后的状态。如果你使用“zero”这个名字,就会撤销所有的迁移。
所以,如果你先运行 migrate zero,然后再运行 migrate,只会清除指定应用的数据。
$ python manage.py migrate ${APPNAME} zero
$ python manage.py migrate ${APPNAME}
17
sqlclear 管理命令可以很有用...
Usage: ./manage.py sqlclear [options] <appname appname ...>
Prints the DROP TABLE SQL statements for the given app name(s).
对于 PostgreSQL,你可以这样做:
./manage.py sqlclear myapp | psql dbname
更新 对于有迁移的应用和 Django 1.7 以上版本:
python manage.py migrate <app> zero