ডেভেলপার মন্তব্য
. জ্যাঙ্গো-logicaldelete আমি প্রায় প্রতি প্রকল্প এবং আমি তৈরি করা প্রতিটি মডেল & nbsp না কিছু কিছু পুনঃব্যবহারের পেতে একসঙ্গে ছুড়ে ফেলে যে একটি ছোট এবং সহজ অ্যাপ্লিকেশন; এটা ভাল তথ্য মুছে ফেলা পেতে এবং এটি অপুনরুদ্ধারযোগ্য হতে জন্য খুব সহজ. এটা মডেল এর Delete () মেথড অগ্রাহ্য এবং শুধু ঝিমুনি রেকর্ড মুছে ফেলা এবং তারপর যে কথাটি মুছে ফেলা আইটেম querysets ফিরে না হয় তাই ডিফল্ট আচরণ অগ্রাহ্য করা জ্যাঙ্গো এর পরিচালকের উপজীব্য করে এই সমাধানের জন্য খুব সহজ.
আমি এই নিয়মের দরকারী পাওয়া গিয়েছে যে তবে দুই ব্যতিক্রম আছে.
& Nbsp; 1. অ্যাডমিন আমি (যে বিষয়টি জন্য মুছে ফেলা বা) শুধু সক্রিয় রেকর্ড, নিচে ফিল্টার করার ক্ষমতা, এটা মুছে ফেলা হয়েছে কিনা বা না একটি সূচক কাছে প্রত্যেক বস্তুরই একটা দেখতে চান.
& Nbsp; 2. আমি এখনও একটি আইটেম বস্তুর ফেরত পাঠাবেন যে এটা প্রাথমিক কী মান মুছে ফেলা হিসাবে এটি চিহ্নিত করা হয়, এমনকি যদি, এর দ্বারা জন্য সংগৃহীত যখন এটি একটি ভ্যালিড রিকোয়েস্ট মনে হয়.
ব্যবহার জ্যাঙ্গো-logicaldelete
অ্যাপ্লিকেশন ব্যবহার করে বেশ সহজ:
& Nbsp; 1. আপনার পাইথন পথে logicaldelete সাব-ফোল্ডারে রাখা.
& Nbsp; 2. আপনি এই কার্যকারিতা শেয়ার করতে চান যে সব মডেলের জন্য logicaldelete.models.Model থেকে উত্তরাধিকারী.
& Nbsp; 3. তৈরি করুন এবং / অথবা logicaldelete.admin.ModelAdmin ব্যবহার করে এই মডেল প্রত্যেকটি জন্য প্রশাসক নিবন্ধন
অতিরিক্ত
লজিক্যাল মুছে ফেলা একটি date_removed কলাম মুদ্রাঙ্কন তারিখ অনুযায়ী পরিচালনা করা হয়. উপরন্তু, একটি date_created এবং date_modified কলাম সুবিধার্থে পূরণ করা হবে.
সম্ভাব্য এক্সটেনশনগুলি
আপনি সহজেই আপনার মডেলের জেনেরিক এবং দরকারী কার্যকারিতা উপলব্ধ করা হয় এই দুটি ক্লাস উপশ্রেণী পারেন.
UUID প্রাথমিক কী
তারা আমাকে সক্রিয় কারণ আমি সাধারণত যখন আমি এবং, উপরন্তু, তারা আমার তথ্য একটি obfuscated আইডি প্রদান যদি আমার টেবিল ঠিকরা আমার প্রাথমিক কী জন্য UUID ক্ষেত্র ব্যবহার করে (মানুষ নির্ধারণ করতে পারবে না আমি একটি নির্দিষ্ট বস্তুর কতগুলি আমি তাদের জানি না চান তাহলে আমার ডাটাবেস, কিন্তু কেবল) URL- এ একটি একটি পূর্ণসংখ্যা আইডি খুঁজছেন.
ক্রম ক্ষেত্র
বহুবার আমি এটা দরকারী জন্য এবং স্পষ্টভাবে নিয়ন্ত্রিত সিকোয়েন্সিং পারবেন আমার মডেল একটি পূর্ণসংখ্যা ক্ষেত্র আছে এটি. আমি সাধারণত তথ্য ক্রম মান দ্বারা কম উচ্চ থেকে সাজানো হয় যেখানে কেমন সাজানো বাস্তবায়ন হিসাবে এই বাস্তবায়ন.
এই বাস্তবায়ন করতে মডেল get_query_set অগ্রাহ্য হবে একটি IntegerField, ModelAdmin, একটি অতি আবশ্যকীয় সহজ ছাড়াও হতে হবে যেখানে মডেল এবং ModelAdmin, উভয় উপশ্রেণী চাই করার জন্য, কিছু মত করতে হবে:
বর্গ SequencedModel (logicaldelete.models.Model):
& Nbsp; ক্রম = models.IntegerField ()
বর্গ MyLogicalDeletedManager (logicaldelete.models.LogicalDeletedManager):
& Nbsp; Def get_query_set (স্ব):
& Nbsp; self.model যদি:
& Nbsp;. Qs = সুপার (MyLogicalDeletedManager, স্ব) .get_query_set () ফিল্টার (date_removed__isnull = সত্য)
& Nbsp; SequencedModel যদি inspect.getmro মধ্যে (self.model):
& Nbsp; Qs = qs.order_by ('- ক্রম')
& Nbsp; ফিরে Qs
এই রিলিজে নতুন কি:
- LogicalDeleteManager উপর all_with_deleted পরিবর্তন সবকিছু
- পাইথন
<লি> LogicalDeleteManager logicaldelete.managers করতে logicaldelete.models থেকে সরানো
Logicaldelete.models.Model থেকে <লি> মুছে ফেলা সরানো হয়েছে এবং সবকিছু querysets
আবশ্যক
<লি> জ্যাঙ্গো
পাওয়া মন্তব্যসমূহ না