我有两个问题:
这是我的代码,但没有成功:
Reporter.objects.delete()
答案 0 :(得分:104)
经理内部:
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)
答案 1 :(得分:65)
根据最新的documentation,正确的调用方法是:
Reporter.objects.all().delete()
答案 2 :(得分:9)
如果要删除所有表中的所有数据,可能需要尝试命令python manage.py flush
。这将删除表中的所有数据,但表本身仍然存在。
在此处查看更多内容:https://docs.djangoproject.com/en/1.8/ref/django-admin/
答案 3 :(得分:9)
使用外壳
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()
答案 4 :(得分:3)
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
# 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页面的视图......
def data_del_4(request):
obj = calc_2() ##
obj.del_model_4()
return render(request, 'dc_dash/data_del_4.html') ##
它结束了从 - model == model_4删除所有条目,但现在我在管理控制台中看到一个错误屏幕,当我试图确定model_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"
请考虑一下 - 如果我们不去管理控制台并尝试查看模型的对象 - 已经删除 - Django应用程序就像预期的那样工作。
答案 5 :(得分:2)
使用此语法删除行也将重定向到主页(以避免页面加载错误):
def delete_all(self):
Reporter.objects.all().delete()
return HttpResponseRedirect('/')
答案 6 :(得分:0)
有几种方法:
直接删除它:
SomeModel.objects.filter(id=id).delete()
要从实例中删除它:
instance1 = SomeModel.objects.get(id=id)
instance1.delete()
//不要使用相同的名称
答案 7 :(得分:0)
您可以使用Django-Truncate库删除表的所有数据,而不会破坏表结构。
示例:
pip install django-truncate
settings.py
文件中的“ INSTALLED_APPS”中添加“ django_truncate”:INSTALLED_APPS = [
...
'django_truncate',
]
python manage.py truncate --apps app_name --models table_name