2010-05-12 14 views
7

¿Cuál es el mejor enfoque para extender el modelo de sitio en django? ¿Creando un nuevo modelo y ForeignKey the Site o hay otro enfoque que me permita crear una subclase del modelo del Sitio?¿Cómo se extiende el modelo de sitio en django?

Prefiero la creación de subclases, porque relacionalmente estoy más cómodo, pero me preocupa el impacto que tendrá con el administrador incorporado.

Respuesta

8

Acabo de utilizar mi propia subclase de Sitio y he creado un administrador personalizado para ella.

Básicamente, cuando subclases un modelo en django, crea FK apuntando al modelo principal y permite acceder a los campos del modelo principal de forma transparente, de la misma manera que accederías a los atributos de clase padre en pyhon. El administrador incorporado no sufrirá ningún daño, pero deberá anular el registro de Sites ModelAdmin y registrar su propio ModelAdmin.

+2

¿Qué tal estas cosas? ¿Aún funcionan? http://docs.djangoproject.com/en/dev/ref/contrib/sites/#how-django-uses-the-sites-framework –

4

Si solo quiere cambiar el comportamiento del objeto, pero no agrega ningún campo nuevo, debería considerar usar un "modelo proxy" (nuevo en Django 1.1). Puede agregar métodos adicionales de Python a los modelos existentes, y más:

Esto es lo que es la herencia del modelo proxy: crear un proxy para el modelo original. Puede crear, eliminar y actualizar instancias del modelo de proxy y todos los datos se guardarán como si estuviera usando el modelo original (sin proxy). La diferencia es que puede cambiar cosas como el orden por modelo predeterminado o el administrador predeterminado en el proxy, sin tener que modificar el original.

Más información en the documentation.

+0

Estoy buscando agregar un nuevo campo; pero gracias por la información. Muy útil independientemente –

1

Puede tener otro modelo como SiteProfile que tenga una relación OneToOne con Site.

Cuestiones relacionadas