zjm*_*126 99 python django django-queryset
我有两个问题:
这是我的代码,但没有成功:
Reporter.objects.delete()
Run Code Online (Sandbox Code Playgroud)
Tia*_*ago 118
经理内部:
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)
Run Code Online (Sandbox Code Playgroud)
小智 77
根据最新文档,正确的调用方法是:
Reporter.objects.all().delete()
Run Code Online (Sandbox Code Playgroud)
小智 23
使用外壳,
1)对于删除表:
python manage.py dbshell
>> DROP TABLE {app_name}_{model_name}
Run Code Online (Sandbox Code Playgroud)
2)从表中删除所有数据:
python manage.py shell
>> from {app_name}.models import {model_name}
>> {model_name}.objects.all().delete()
Run Code Online (Sandbox Code Playgroud)
小智 13
如果要删除所有表中的所有数据,可能需要尝试该命令python manage.py flush.这将删除表中的所有数据,但表本身仍然存在.
在此处查看更多信息:https://docs.djangoproject.com/en/1.8/ref/django-admin/
Django 1.11 delete all objects from a database table -
Entry.objects.all().delete() ## Entry being Model Name.
Run Code Online (Sandbox Code Playgroud)
Refer the Official Django documentation here as quoted below - https://docs.djangoproject.com/en/1.11/topics/db/queries/#deleting-objects
Note that delete() is the only QuerySet method that is not exposed on a Manager itself. This is a safety mechanism to prevent you from accidentally requesting Entry.objects.delete(), and deleting all the entries. If you do want to delete all the objects, then you have to explicitly request a complete query set:
I myself tried the code snippet seen below within my 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)
Run Code Online (Sandbox Code Playgroud)
and within my views.py i have a view that simply renders a html page ...
def data_del_4(request):
obj = calc_2() ##
obj.del_model_4()
return render(request, 'dc_dash/data_del_4.html') ##
Run Code Online (Sandbox Code Playgroud)
it ended deleting all entries from - model == model_4 , but now i get to see a Error screen within Admin console when i try to asceratin that all objects of model_4 have been deleted ...
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"
Run Code Online (Sandbox Code Playgroud)
Do consider that - if we do not go to the ADMIN Console and try and see objects of the model - which have been already deleted - the Django app works just as intended.
小智 5
使用此语法删除行也可以重定向到主页(以避免页面加载错误):
def delete_all(self):
Reporter.objects.all().delete()
return HttpResponseRedirect('/')
Run Code Online (Sandbox Code Playgroud)