জ্যাঙ্গো মডেলগুলিতে রেকর্ডটি কীভাবে মুছবেন?


267

আমি একটি বিশেষ রেকর্ড মুছতে চাই। যেমন

delete from table_name where id = 1;

আমি কীভাবে এটি করতে পারি django model?


16
প্রশ্ন জিজ্ঞাসা করার জন্য ধন্যবাদ। কখনও কখনও আরটিএফএম গুগল অনুসন্ধান এবং এসও এর চেয়ে অনেক বেশি সময় নেয়, যেমন উত্তর উত্তর এবং ভোট
দানের

8
@ ফ্রিডম_বেনের সাথে একমত হয়েছেন, তবে ভবিষ্যতের পাঠকদের জন্য যেভাবে চ
জেন

উত্তর:


512

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

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

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

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

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

50
মনে রাখবেন যে প্রথমটি অবজেক্টটির .delet () পদ্ধতিটি কল করবে না, সুতরাং সেই পদ্ধতিতে আপনার যদি 'ক্লিনআপ' কোড থাকে তবে তা কল করা হবে না। সাধারণত কোনও সমস্যা নয়, তবে মনে রাখা উচিত worth
ম্যাথু শিনকেল

8
@ ম্যাথজে শিনকেল: এটি সত্য। আপনি যদি এর পরিবর্তে সিগন্যাল pre_deleteবা post_deleteসিগন্যাল ব্যবহার করা পছন্দ করেন তবে কাস্টম মোছার পদ্ধতিটি রাখতে চান ।
ওল্ফ

2
আমি জানিনা ডিজেঙ্গো ১.৪-এর পরে কী ঘটেছে তবে এটি আসলে সমস্ত পিকে আনছে এবং তারপরে সেই পিকেগুলি মুছে ফেলবে। সুতরাং উদাহরণস্বরূপ, আপনি যদি একটি স্বেচ্ছাসেবী ক্ষেত্রের দ্বারা মুছে
ফেলেন

1
@ বাজক হার্মেকজ: মোছার সিগন্যালগুলির কারণে এটি সত্য এবং প্রত্যাশিত আচরণ। জ্যাঙ্গো সিগন্যাল সিস্টেমে সমস্ত ডাটাবেস পরিবর্তনগুলি ট্র্যাক করতে হবে কারণ এটির মধ্যে কিছু হুক হতে পারে (যেমন বিপরীতে ঘটে)।
ওল্ফ

3
আপনি delete()কী মুছে ফেলছেন তা যাচাই করতে আপনি এর রিটার্ন মানটি ব্যবহার করতে পারেন । এটি হয়তো মুছে ফেলা বস্তুর সংখ্যা ও মোছা ধরনের, যেমন সম্পর্কে বিশদ বিবরণ সহ একটি অভিধান সঙ্গে একটি tuple ফেরৎ (1, {'yourapp.SomeModel': 1})
এমসিবি

37
MyModel.objects.get(pk=1).delete()

নির্দিষ্ট প্রাথমিক কী সহ অবজেক্টটি উপস্থিত না থাকলে এটি ব্যতিক্রম করবে কারণ প্রথমে এটি নির্দিষ্ট করা বস্তুটি পুনরুদ্ধার করার চেষ্টা করে।

MyModel.objects.filter(pk=1).delete()

যদি নির্দিষ্ট প্রাথমিক কী সহ অবজেক্টটি উপস্থিত না থাকে এবং এটি সরাসরি কোয়েরি তৈরি করে তবে এই ব্যতিক্রম বাড়াবে না

DELETE FROM my_models where id=1

1
টাইপ ইন MyModel.object.filter(pk=1).delete()। এটি "অবজেক্টস" হওয়া উচিত।
নাইজেল

7

আপনি যদি একটি আইটেম মুছতে চান

wishlist = Wishlist.objects.get(id = 20)
wishlist.delete()

আপনি উদাহরণস্বরূপ পছন্দসই সমস্ত আইটেম মুছতে চান

Wishlist.objects.all().delete()

7

আপনি যদি একটি উদাহরণ মুছতে চান তবে কোডটি লিখুন

delet= Account.objects.get(id= 5)
delet.delete()

আপনি যদি সমস্ত উদাহরণ মুছতে চান তবে কোডটি লিখুন

delet= Account.objects.all()
delete.delete()

6

ওল্ফ একটি ভাল উত্তর কেন্দ্রিক কোড সরবরাহ করেছে। জনগণের রেফারেন্সের জন্য আমাকে এখানে সরকারী ডকটি এখানে আটকান ।

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