জ্যাঙ্গো ব্যবহার করে কোনও টেবিলের সমস্ত ডেটা কীভাবে সরিয়ে ফেলা যায়


113

আমার দুটি প্রশ্ন আছে:

  1. জ্যাঙ্গোতে আমি কীভাবে একটি টেবিল মুছতে পারি?
  2. আমি কীভাবে টেবিলের সমস্ত ডেটা সরিয়ে ফেলব?

এটি আমার কোড, যা সফল নয়:

Reporter.objects.delete()

উত্তর:


139

একজন পরিচালকের ভিতরে:

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)

3
এছাড়াও, আপনি যদি মুছুন_সামান্য কিছু () পদ্ধতি হন তবে এই বাগ থেকে সাবধান থাকুন: কোড. djangoproject.com/ticket/16426
ডেভিড প্লানেলা

1
যদিও এটি প্রথম প্রশ্নের উত্তর দেয়, এটি দ্বিতীয় প্রশ্নটি পরিচালনা করে না। আমি এই 'DELETE FROM %s' % (table_name, )বিটের জন্য টেবিলটি খালি কিন্তু অক্ষত রেখে ব্যবহার করব ।
ব্যবহারকারী 393434630

93

সর্বশেষতম ডকুমেন্টেশন অনুসারে , কল করার সঠিক পদ্ধতিটি হ'ল:

Reporter.objects.all().delete()

3
হ্যাঁ তবে যদি আপনার টেবিলে অনেক রেকর্ড থাকে তবে এটি মারা যায়। সুতরাং আমাকে এটি করতে হয়েছিল: মেটেবল.ওবজেক্টস.এল () এর পুনরুক্তিকারী (): এক্স.ডিলেট ()
সর্বোচ্চ

2
@ ম্যাক্স নোট করুন তবে এটির সাথে, উদাহরণটির deleteপদ্ধতিটি বলা হয়, যখন deleteকল করার সাথে QuerySetএটি হয় না।
alxs

19

আপনি যদি আপনার সমস্ত টেবিল থেকে সমস্ত ডেটা সরাতে চান তবে আপনি কমান্ডটি চেষ্টা করতে চাইতে পারেন python manage.py flush। এটি আপনার টেবিলগুলির সমস্ত ডেটা মুছে ফেলবে, তবে টেবিলগুলি সেগুলি এখনও উপস্থিত থাকবে।

এখানে আরও দেখুন: https://docs.djangoproject.com/en/1.8/ref/django-admin/


19
এটি উল্লেখ করার জন্য আপনার পক্ষে সহায়ক হতে পারে যে এটি আপনার
সুপারউজারকেও

15
তিনি "আপনার সমস্ত টেবিলের সমস্ত ডেটা" বলেছেন, যা এটি অত্যন্ত ধ্বংসাত্মক ক্রিয়াকলাপ বোঝায়।
জর্দান

6

শেল ব্যবহার করে,

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

জাজানো 1.11 একটি ডাটাবেস টেবিল থেকে সমস্ত বস্তু মুছুন -

Entry.objects.all().delete()  ## Entry being Model Name. 

নীচে উদ্ধৃত হিসাবে এখানে অফিসিয়াল জ্যাঙ্গো ডকুমেন্টেশন দেখুন - https://docs.djangoproject.com/en/1.11/topics/db/queries/#deleting-objects

মনে রাখবেন যে মুছুন () হ'ল একমাত্র কোয়েরি সেট পদ্ধতি যা কোনও ম্যানেজারেই প্রকাশিত হয় না। দুর্ঘটনাক্রমে আপনাকে এন্ট্রি.ওবজেক্টস.ডিলেট () অনুরোধ করা এবং সমস্ত এন্ট্রি মুছতে বাধা দেওয়ার জন্য এটি একটি সুরক্ষা ব্যবস্থা। আপনি যদি সমস্ত অবজেক্ট মুছতে চান তবে আপনাকে স্পষ্টভাবে একটি সম্পূর্ণ ক্যোয়ারী সেটটি অনুরোধ করতে হবে:

আমি নিজেই আমার মধ্যে নীচে প্রদর্শিত কোড স্নিপেট চেষ্টা করেছিলাম 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') ## 

এটি মডেল == মডেল = থেকে সমস্ত এন্ট্রি মুছে ফেলা শেষ হয়েছিল, তবে এখন আমি অ্যাডমিন কনসোলের মধ্যে একটি ত্রুটি পর্দা দেখতে পাব যখন মডেল ৮ এর সমস্ত অবজেক্ট মুছে ফেলা হয়েছে যখন আমি আরোহণের চেষ্টা করি ...

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" 

এটি বিবেচনা করুন - যদি আমরা অ্যাডমিন কনসোলে না গিয়ে মডেলটির বস্তুগুলি - যা ইতিমধ্যে মুছে ফেলা হয়েছে দেখুন এবং দেখুন না - জ্যাঙ্গো অ্যাপ্লিকেশন ঠিক যেমনটি ইচ্ছা তেমন কাজ করে।

জাঙ্গো অ্যাডমিনের স্ক্রিনক্যাপচার


1

কয়েকটি উপায় আছে:

এটি সরাসরি মুছতে:

SomeModel.objects.filter(id=id).delete()

এটি একটি উদাহরণ থেকে মুছতে:

instance1 = SomeModel.objects.get(id=id)
instance1.delete()

// একই নাম ব্যবহার করবেন না

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.