我有两个问题:
这是我的代码,但不成功:
Reporter.objects.delete()
管理者内部:
def delete_everything(self): Reporter.objects.all().delete() def drop_table(self): cursor = connection.cursor() table_name = self.model._meta.db_table sql = "DROP TABLE %s;" % (table_name, ) cursor.execute(sql)
根据最新的 文件,正确的调用方法是:
Reporter.objects.all().delete()
如果要从所有表中删除所有数据,可以尝试使用命令 python manage.py flush。这将删除表中的所有数据,但表本身仍然存在。
python manage.py flush
点此查看更多内容: https://docs.djangoproject.com/en/1.8/ref/django-admin/
有几种方法:
直接删除:
SomeModel.objects.filter(id=id).delete()
从实例中删除:
instance1 = SomeModel.objects.get(id=id) instance1.delete()
//不使用相同的名字
Django 1.11从数据库表中删除所有对象-
Entry.objects.all().delete() ## Entry being Model Name.
请参考下面引用的 Django 官方文档- Https://docs.djangoproject.com/en/1.11/topics/db/queries/#deleting-objects
请注意,delete ()是唯一没有在 Manager 本身上公开的 QuerySet 方法。这是一种安全机制,可以防止您意外地请求 Entry.objects.delete ()并删除所有条目。如果您确实想删除所有对象,那么您必须显式地请求一个完整的查询集:
我自己尝试了下面在 somefilename.py中看到的代码片段
somefilename.py
# for deleting model objects from django.db import connection def del_model_4(self): with connection.schema_editor() as schema_editor: schema_editor.delete_model(model_4)
在我的 views.py我有一个视图,只是呈现一个 html 页面..。
views.py
def data_del_4(request): obj = calc_2() ## obj.del_model_4() return render(request, 'dc_dash/data_del_4.html') ##
它结束了删除所有条目从-model = = model _ 4,但现在我看到一个错误屏幕在管理控制台当我试图确定模型 _ 4的所有对象已经被删除..。
ProgrammingError at /admin/dc_dash/model_4/ relation "dc_dash_model_4" does not exist LINE 1: SELECT COUNT(*) AS "__count" FROM "dc_dash_model_4"
请务必考虑到-如果我们不去 ADMIN 控制台,并尝试看到模型的对象-这已经被删除-Django 应用程序的工作正如预期。
Django 管理截图
使用 shell,
1)删除表格:
python manage.py dbshell >> DROP TABLE {app_name}_{model_name}
2)删除表内所有资料:
python manage.py shell >> from {app_name}.models import {model_name} >> {model_name}.objects.all().delete()
可以使用 Django-Truncate 库在不破坏表结构的情况下删除表的所有数据。
例如:
pip install django-truncate
settings.py
INSTALLED_APPS = [ ... 'django_truncate', ]
python manage.py truncate --apps app_name --models table_name
使用这种语法可以删除行,也可以重定向到主页(以避免页面加载错误) :
def delete_all(self): Reporter.objects.all().delete() return HttpResponseRedirect('/')
实际上,我从 admin.py 中取消注册模型(我想删除的表数据) ,然后迁移。
python manage.py makemigrations python manage.py migrate python runserver
然后在 admin.py 中注册模型,再次进行迁移。现在,桌子是空的。这可能不是一个专业的回答,但它帮助了我。