Как я могу гарантировать, что определенные экземпляры модели всегда присутствуют в базе данных django? - PullRequest
0 голосов
/ 13 марта 2020

Мое django -приложение требует, чтобы несколько экземпляров модели всегда присутствовали в базе данных для правильной работы.

В настоящее время я создаю экземпляры модели, которые мне требуются в методе Appconfig.ready(self) для соответствующего приложения. , Таким образом, экземпляры всегда присутствуют при загрузке django -приложения. Это работает, но не так, как хотелось бы, я должен быть осторожен при удалении объектов, чтобы не удалять требуемые объекты.

Я бы хотел, чтобы требуемые экземпляры модели были отменяемыми или желательно создается всякий раз, когда их нет в базе данных.

1 Ответ

0 голосов
/ 13 марта 2020

Я согласен с вашим решением о защите определенных объектов от удаления в вашей проблеме. Для этого есть два способа:

  • Когда происходит удаление, проверьте, защищен ли объект или нет
  • Настройте права администратора и не позволяйте никому удалять объект из админ-панели

Основным отличием является, во-первых, единственный способ удалить защищенные объекты из интерфейса командной строки базы данных, однако, во-вторых, модель можно удалить в коде.

Для первого способа вам необходимо переопределить удалить метод модели и проверить что-то вроде этого

assert pk != self.protected_objects

Где список защищенных объектов является свойством класса вашей модели.

Для второго способа вы бы сделали

class YourModel(admin.ModelAdmin):
    protected_objects = [1,2,...]
    def has_delete_permission(self, request, obj=None):
        return obj.pk not in self.protected_objects
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...