2010-02-16 6 views
16

Estoy haciendo un sitio web muy simple en Django. En una de las páginas hay un ticker vertical. Necesito darle al cliente una forma de editar el contenido del ticker box como HTMLField.¿Qué tal tener un SingletonModel en Django?

La primera forma que me vino a la mente fue hacer un modelo Ticker que tendrá solo una instancia. Entonces pensé, en lugar de asegurarme manualmente de que solo existe una instancia, quizás exista (o debería haber) algo como una clase SingletonModel en Django, que es como un modelo normal, excepto que se asegura de que no se cree más de una instancia. ?

¿O quizás debería resolver mi problema de otra manera?

Respuesta

1

reescriba el método de guardar para que cada vez que se guarde un objeto Ticker sobrescriba el existente (si existe).

+2

Posible, pero también me gustaría algunas otras cosas, como no tener el botón "Agregar otro" en el administrador, y entonces también podríamos hacer un 'Modelo Singleton' para todo esto. –

2

Creo que tener un modelo "singleton" es feo; es un uso tonto de la base de datos relacional y su mala IU, porque la IU del administrador se basa en el trabajo con listas de objetos.

En su lugar, prefiero usar una solución genérica como django-chunks o django-flatblocks para esto.

+0

Eso es mejor para el texto, pero ¿qué pasa con los trozos que se relacionan con otros modelos? Si, por ejemplo, desea enumerar proyectos específicos en la página de inicio, le quedan 3 opciones: a) una casilla de verificación en el modelo de Proyecto (project.display_on_homepage) O b) una página de inicio singleton O c) configurar feincms o similar CMS y agrega un tipo de contenido para eso. –

1

Un modelo con solo una instancia, un singleton, es a veces útil para cosas como la configuración global que desea editar desde el administrador en lugar de tenerlas en Django settings.py.

Existen varias aplicaciones de terceros que ayudan a implementar modelos de singleton y mejoran la interfaz de administración, por ejemplo, django-solo, django-singleton-admin, django-singletons.

8

Pruebe django-solo, funciona en django 1.5 + con seguridad, django-singletons no funciona con 1.5 + porque usa una característica en desuso.

Cuestiones relacionadas