2009-05-13 18 views
18

quiero usar la interfaz de administración de Django para una aplicación web muy simple pero no puedo conseguir en torno a un problema que no debería ser tan difícil de resolver ..auto-poblar con Django sitio de administración

Considérese lo siguiente:

class Contact(models.Model): 
    name = models.CharField(max_length=250, blank=False) 
    created_by = models.ForeignKey(User, blank=False) 

no puedo encontrar una manera de rellenar automáticamente el campo created_by y hacer que la administración de Django consciente de ello. La mayor parte del método que he visto implica sobrecargar el método de guardar del Objeto y pasarlo al usuario de la solicitud. Todos ellos requieren construir sus vistas y/o formularios personalizados.

De manera óptima la forma de crear nuevos contactos en el sitio de administración no debe mostrar el campo created_by (que es bastante fácil) y rellenar automáticamente con el usuario actual (que parece más difícil de lo que debería).

Respuesta

23

http://code.djangoproject.com/wiki/CookBookNewformsAdminAndUser

pasa por la aplicación Guardar métodos en los objetos ModelAdmin.

+0

¡Eso es exactamente lo que estaba buscando, gracias! –

+1

Esto fue muy útil y me llevó a la página de documentos, que es aún mejor porque te permite seleccionar tu versión de Django. Por ejemplo, versión 1.6: https://docs.djangoproject.com/en/1.6/ref/contrib/admin/ – sage

4

Debe especificar default para el campo, en este caso, una llamada al método que obtiene el usuario actual (consulte la documentación de autenticación para obtener el usuario actual).

1

Realmente quería una solución mejor que las que encontré en otros lugares, así que escribí algunos middleware: implementación en el Populate user Id question. Mi solución no requiere cambios en ninguna forma o vista.

Cuestiones relacionadas