2011-04-12 18 views
18
author = models.ForeignKey(User) 

¿Hay alguna manera en que pueda establecer el valor predeterminado de este campo para seleccionar automáticamente el usuario que inició sesión? Sé que puede hacer esto en el método de guardar, pero mi cliente ha solicitado que se establezca de manera predeterminada automáticamente al usuario que inició sesión en el momento de la edición para evitar confusiones.Valor predeterminado para el usuario ForeignKey con administrador de Django

This article se explica cómo actualizarlo durante el guardado, pero no en el momento de edición.

+0

¿Qué es "edit time"? quiero decir, el artículo está editado cuando está guardado, ¿no? – arie

Respuesta

44
class MyModelAdmin(admin.ModelAdmin): 
    def formfield_for_foreignkey(self, db_field, request, **kwargs): 
     if db_field.name == 'author': 
      kwargs['initial'] = request.user.id 
     return super(MyModelAdmin, self).formfield_for_foreignkey(
      db_field, request, **kwargs 
     ) 
+2

Solo una nota al margen: creo que no necesita esta línea 'return db_field.formfield (** kwargs)' en un caso general. – naktinis

+0

Creo que @naktin es correcto y, cuando no lo usas, el autocomplete_lookup_fields de grappelli funciona – iskorum

+0

Gracias. Acepto y eliminé la línea. –

0

Puede anular la parte de administrador de su modelo para no mostrar el autor si el objeto que está editando es nuevo porque debe configurarse para el usuario actual y solo si está editando un objeto ¿lo muestra el campo?

Para ello, anule el método get_form de ModelAdmin.

Cuestiones relacionadas