2つの質問があります。
これは私のコードですが、成功していません:
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
コマンドを試してください。これにより、テーブル内のすべてのデータが削除されますが、テーブル自体は引き続き存在します。
詳細はこちらをご覧ください: https://docs.djangoproject.com/en/1.8/ref/Django-admin/
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"
それを考慮してください-ADMINコンソールに移動してモデルのオブジェクトを確認しようとしない場合-既に削除されている-Djangoアプリは意図したとおりに機能します。
いくつかの方法があります。
直接削除するには:
SomeModel.objects.filter(id=id).delete()
インスタンスから削除するには:
instance1 = SomeModel.objects.get(id=id)
instance1.delete()
//同じ名前を使用しないでください