Я хотел бы управлять некоторыми настройками конфигурации для моего проекта с использованием модели базы данных. Например:Разрешить только один экземпляр модели в Django
class JuicerBaseSettings(models.Model):
max_rpm = model.IntegerField(default=10)
min_rpm = model.IntegerField(default=0)
Там должен быть только один экземпляр данной модели:
juicer_base = JuicerBaseSettings()
juicer_base.save()
Конечно если кто-то случайно создает новые экземпляры, это не конец света. Я мог бы просто сделать JuicerBaseSettings.objects.all().first()
. Однако есть ли способ заблокировать его таким образом, что невозможно создать более одного экземпляра?
Я нашел два связанных вопроса на SO. This answer предлагает использовать сторонние приложения, такие как django-singletons
, который, похоже, не активно поддерживается (последнее обновление для git repo - 5 лет назад). Another answer предлагает использовать комбинацию разрешений или OneToOneField
. Оба ответа - с 2010-2011 гг.
Учитывая, что с тех пор Django сильно изменилось, существуют ли стандартные способы решения этой проблемы? Или я должен просто использовать .first()
и признать, что могут быть дубликаты?
... или вы могли бы сделать '.get (рк = 1)' вместо ... – Bakuriu
это не должно быть в базе данных вообще – e4c5
@ e4c5 разумно, но в небольших проектах я всегда сталкиваюсь с такими настройками сайта, которые позволяют клиенту изменять администратор, что-то вроде номера телефона или другого, связанного с материалом проекта. Возможно, вы указываете на лучший способ –