Как насчет наличия SingletonModel в Django? - PullRequest
17 голосов
/ 16 февраля 2010

Я делаю очень простой сайт в Джанго. На одной из страниц есть вертикальная галочка. Мне нужно дать клиенту возможность редактировать содержимое поля тикера как HTMLField.

Первым, что пришло в голову, было создание модели Ticker, которая будет иметь только один экземпляр. Тогда я подумал, что вместо того, чтобы вручную проверять, существует ли только один экземпляр, возможно, есть (или должен быть) что-то вроде SingletonModel класса в Django, который похож на обычную модель, за исключением того, что он обеспечивает не более одного экземпляра создается?

Или, может быть, я должен решить свою проблему по-другому?

Ответы [ 5 ]

9 голосов
/ 28 декабря 2013

Попробуйте django-solo , точно работает в django 1.5+, django-singletons не работает с 1.5+, потому что использует устаревшую функцию.

3 голосов
/ 02 июня 2012

Вы можете использовать django_singletons . Он имеет встроенную поддержку администратора.

2 голосов
/ 16 февраля 2010

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

Вместо этого я предпочитаю использовать универсальное решение, например django-chunks или django-flatblocks .

1 голос
/ 29 июля 2013

Модель только с одним экземпляром, одиночным, иногда полезна для таких вещей, как глобальные настройки, которые вы хотите редактировать от администратора, вместо того, чтобы иметь их в Django settings.py.

Существует несколько сторонних приложений, которые помогают реализовывать одноэлементные модели и улучшают интерфейс администратора, например, django-solo , django-singleton-admin , django-singletons .

1 голос
/ 16 февраля 2010

переписать ваш метод сохранения так, чтобы каждый раз, когда объект Ticker сохранялся, он перезаписывал существующий (если он существует).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...