只刷一个应用程序而不是整个项目

Tim*_*ans 21 python django django-models

python manage.py flush从整个项目中删除数据.我想能够做到python manage.py flush agivenapp我该怎么做?

Jer*_*zyk 15

sqlclear管理命令可以帮助...

Usage: ./manage.py sqlclear [options] <appname appname ...>

Prints the DROP TABLE SQL statements for the given app name(s).
Run Code Online (Sandbox Code Playgroud)

对于postgresql你可以做:

./manage.py sqlclear myapp | psql dbname
Run Code Online (Sandbox Code Playgroud)

具有迁移和Django 1.7+的应用程序的更新:

python manage.py migrate <app> zero
Run Code Online (Sandbox Code Playgroud)

  • 对于具有迁移和Django 1.7+的应用程序:python manage.py migrate <app>零 (4认同)

Chr*_*our 10

您可以使用带有migrate两个位置参数的命令来执行此操作:

更新数据库架构.管理具有迁移的应用程序和没有迁移的应用程序.

位置参数:

app_label
用于同步状态的应用程序的App标签.
migration_name
数据库状态将在迁移后进入状态.使用名称"零"取消应用所有迁移.

因此,运行迁移零并随后迁移将仅清除给定应用程序的数据.

$ python manage.py migrate ${APPNAME} zero
$ python manage.py migrate ${APPNAME}    
Run Code Online (Sandbox Code Playgroud)


小智 7

对于更高版本的 Django,请尝试在 Django shell 中:

from django.apps import apps
my_app = apps.get_app_config('my_app_name')
my_models = my_app.get_models()
for model in my_models:
    model.objects.all().delete()
Run Code Online (Sandbox Code Playgroud)

有关该模块的更多信息可以在此处apps找到。当然,您可以使用管理基础架构自行将其转换为管理命令。