django-logicaldelete

Скріншот програми:
django-logicaldelete
Дані програми:
Версія: 1.1 Beta 1 Dev3
Дата завантаження: 12 May 15
Розробник: Patrick Altman
Ліцензія: Безкоштовно
Популярність: 30

Rating: nan/5 (Total Votes: 0)

коментарі розробників
Django-logicaldelete є невеликий і просте додаток, що я кинув разом, щоб отримати повторне з чогось, що я роблю майже кожен проект і кожної моделі я створюю і NBSP ;. Це занадто легко для хороших даних, щоб виключити і те не читається. Це також дуже легко виправити це шляхом перевизначення методу, моделі видалення () і просто маркування записів як вилучені, а потім використовуючи Менеджери Django, щоб змінити поведінку за замовчуванням, так що логічно вилучені елементи не повертаються в querysets.
Є два винятки, однак, що я знайшов корисним цього правила.
& NBSP; 1. В адмін я хотів би бачити все з показником він був видалений, з можливістю фільтрації до просто активних записів, (або віддалених з цього питання).
& NBSP; 2. Я досі думаю, що це справедливо, коли запит пункт вибирається для по це значення первинного ключа, що об'єкт повинен повернутися, навіть якщо він позначається як віддалений.
<Сильний> Використання Django-logicaldelete
Використовуючи додаток дуже просто:
& NBSP; 1. Поставте logicaldelete підпапку на вашому шляху Python.
& NBSP; 2. Успадковувати від logicaldelete.models.Model для всіх моделей, які ви хотіли б поділитися в цій функціональності.
& NBSP; 3. Створення та / або Зареєструватися адмінів для кожного з цих моделей з використанням logicaldelete.admin.ModelAdmin
<Сильний> Додаткові
Логічні видаляє обробляються за датою штампування date_removed колонки. Крім того, через DATE_CREATED і date_modified колонки будуть заповнені зручності.
Можливі Розширення
Ви можете легко створити підклас цих двох класів, щоб забезпечити загальну і корисну функціональність вашої моделі.
UUID первинного ключа
Я, як правило, за допомогою UUID поля для моїх первинних ключів, тому що вони дозволяють мені Шарда мої таблиці, якщо і коли мені потрібно, крім того, вони забезпечують затемнений ідентифікатор моїми даними (люди не можуть визначити, скільки з певного об'єкта я маю на моя база даних, якщо я не хочу, щоб вони знали, а просто дивиться в ціле ID в URL).
Послідовність поле
Багато разів я знаходжу це корисно мати ціле поле на моїй моделі, які дозволяють контролювати і явно послідовності. Я зазвичай здійснити це як сортувати по спадаючій реалізації, де дані сортуються від високої до низької за значенням послідовності.
Для того, щоб здійснити це ти підклас і модель, і ModelAdmin, де модель буде очевидний простий додавання IntegerField, в ModelAdmin, буде превалювати get_query_set, щоб зробити щось на кшталт:
клас 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 = True)
& NBSP; якщо SequencedModel в inspect.getmro (self.model):
& NBSP; QS = qs.order_by ('- послідовність ")
& NBSP; повернення QS

Що нового У цьому випуску:

  • Змінено все, щоб all_with_deleted на LogicalDeleteManager
  • LogicalDeleteManager переїхав з logicaldelete.models в logicaldelete.managers
  • Вилучено видалені і всі querysets з logicaldelete.models.Model

Вимоги

  • Python
  • Джанго

Інші програми розробника Patrick Altman

django-logicaldelete

Коментар не знайдено
додати коментар
Включіть картинки!