2012-10-06 10 views
9

Estoy tratando de implementar una actualización automática para el usuario que crea un registro usando ModelAdmin save_model como se describe here. No pude resolver cómo evitar el error de kwarg "save() obtuvo un argumento de palabra clave inesperado 'force_insert'".django usuario de actualización automática; save() obtuvo un argumento de palabra clave inesperado 'force_insert'

admin.py 
from myapp.myproj.models import Activity 
from django.contrib import admin 

class ActivityAdmin(admin.ModelAdmin): 
    exclude = ('cruser',) 
    list_display = ('activity_nm', 'activity_desc', 'startdt', 'enddt','upddt','crdt') 

    def save_model(self, request, obj, form, change): 
     if not change: 
      obj.cruser = request.user 
     obj.save() 

admin.site.register(Activity, ActivityAdmin) 

Los documentation estados que

"El método save_model se da la HttpRequest, una instancia de modelo, un ejemplo ModelForm y un valor booleano en función de si se está añadiendo o cambiar el objeto. "

¿Esto es algo automático o tengo que pasarlo desde la vista? Si ese no es el problema, ¿qué otra cosa podría ser?

EDITAR: cambió el código de nuevo para que coincida con el ejemplo.

Respuesta

26

actualización

Si ha anulado save() método de Activity o algunos otros modelos que se salva en su parte, pero olvidado a aceptar force_insert argumento como palabra clave, este error podría ocurrir:

def save(self): 
    ... 
# should be 
def save(self, force_insert=False, force_update=False, using=None): 
    ... 
# or at least 
def save(self, **kwargs): 
    ... 

Compruebe el trackback para localizar el error save


Su código no sigue completamente el código de b-list.org, Proveedores:

def save_model(self, request, obj, form, change): 
    if not change: 
     obj.cruser = request.user 
    obj.save() 
+0

Gracias por señalarlo. Fue un sobrante de algunas pruebas que hice. Lo cambié al código correcto, pero aún arroja el mismo error. – jabs

+1

@jabs has anulado el método 'save()' de 'Activity' u otros Modelos que también se guardan. – okm

+0

Eso fue todo. Tenía un método save() en mi modelo. ¡GRACIAS! – jabs

Cuestiones relacionadas