Yanıtlar:
Bir yöneticinin içinde:
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)
'DELETE FROM %s' % (table_name, )
Tabloyu boş ama sağlam bırakarak bunun için kullanırdım .
En son belgelere göre , aramak için doğru yöntem şu olacaktır:
Reporter.objects.all().delete()
delete
yöntemi ile ise denir delete
çağrıya QuerySet
buna değil.
Tüm tablolarınızdan tüm verileri kaldırmak istiyorsanız, komutu denemek isteyebilirsiniz python manage.py flush
. Bu, tablolarınızdaki tüm verileri siler, ancak tabloların kendisi hala var olacaktır.
Daha fazlasını burada görün: https://docs.djangoproject.com/en/1.8/ref/django-admin/
Django 1.11 bir veritabanı tablosundaki tüm nesneleri sil -
Entry.objects.all().delete() ## Entry being Model Name.
Aşağıda alıntı yapılan Resmi Django belgelerine bakın - https://docs.djangoproject.com/en/1.11/topics/db/queries/#deleting-objects
Delete () 'nin, bir Yöneticinin kendisinde gösterilmeyen tek QuerySet yöntemi olduğunu unutmayın. Bu, yanlışlıkla Entry.objects.delete () istemenizi ve tüm girdileri silmenizi önlemek için bir güvenlik mekanizmasıdır. Tüm nesneleri silmek istiyorsanız, açıkça eksiksiz bir sorgu kümesi istemeniz gerekir:
Aşağıda görülen kod parçacığını kendim denedim 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)
ve benim içinde views.py
basitçe bir html sayfası oluşturan bir görünümüm var ...
def data_del_4(request):
obj = calc_2() ##
obj.del_model_4()
return render(request, 'dc_dash/data_del_4.html') ##
- model == model_4'teki tüm girişleri silmeyi sona erdirdi, ancak şimdi Model_4'ün tüm nesnelerinin silindiğini belirlemeye çalıştığımda Yönetici konsolunda bir Hata ekranı görüyorum ...
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"
Eğer ADMIN Konsolu'na gitmezsek ve modelin daha önceden silinmiş nesnelerini görmeye çalışmazsak, Django uygulamasının amaçlandığı gibi çalıştığını göz önünde bulundurun.
Birkaç yol var:
Doğrudan silmek için:
SomeModel.objects.filter(id=id).delete()
Bir örnekten silmek için:
instance1 = SomeModel.objects.get(id=id)
instance1.delete()
// aynı adı kullanma