Я добавляю пользовательские разрешения с помощью «мета» в моделях Django. Ниже приведен простой пример.Django meta permissions
Models.py
class Meta:
permissions = (
("can_do_stuff", "Can do stuff"),
)
Это прекрасно работает, я добавляю приведенный выше код модели, а затем сделать свои миграции, а затем перенести их. Разрешение создается и доступно для использования.
Однако, когда я удаляю (или изменяю) это разрешение из раздела «meta» моей модели и снова makemigrations
, migrate
, разрешение (которое было удалено/изменено) не удалено из системы Django.
Это не проблема, если бы я выяснил, что моя система разрешений 100%, но я хорошо настраивал вещи, когда узнаю, и в результате список разрешений становится беспорядочным с разрешениями «устаревшего».
Я разрабатываю и выпускаю новые версии для серийного использования на частой основе, а разрешения становятся беспорядочными в производстве, где я не могу просто стереть БД, как я мог в dev.
Есть ли рекомендуемый способ сделать это?
Я могу удалить устаревшие разрешения вручную непосредственно из базы данных (кажется, это всего лишь одна запись, которую мне нужно удалить, и это, похоже, не вызывает никаких проблем). Это кажется плохим способом сделать это, при условии ошибки, забыли и т. Д.
Вы пробовали сделать некоторые другие модификации модели, чтобы убедиться, что новая миграция создана, и проверил, что разрешение здесь не удаляется ?. EDIT: я нашел [закрытый вопрос] (https://code.djangoproject.com/ticket/23256), похоже, что он исправлен. – guival