Tengo un modelo con campo:
class MyModel(models.Model): name = models.CharField(max_length=50) created_by = models.ForeignKeyField(User)
En mi administrador:
class MyModelAdmin(admin.ModelAdmin): list_display= ("name",) fields = ("name",)
Aquí no quiero created_by
en admin al agregar MyModel. Quiero que se configure al usuario actual como created_by = request.user
¿Cómo puedo hacer esto?
Gracias
Ya ha establecido fields
para que created_by
no aparezca en forma en el administrador de Django.
Ahora debe anular save_model
y configurar el usuario antes de guardar nuevos objetos.
class MyModelAdmin(admin.ModelAdmin): fields = ("name",) def save_model(self, request, obj, form, change): if not change: # the object is being created, so set the user obj.created_by = request.user obj.save()
Para hacerlo, anule el método save_model
y configure el campo created_by
para el usuario actual.
class MyModelAdmin(admin.ModelAdmin): list_display= ("name",) fields = ("name",) def save_model(self, request, obj, form, change): if not change: # can use this condition also to set 'created_by' # if not getattr(obj, 'created_by', None): obj.created_by = request.user obj.save()