django mise à jour automatique de l'utilisateur; save() a obtenu un inattendu argument mot-clé 'force_insert'
Je suis en train de mettre en œuvre une mise à jour automatique pour l'utilisateur qui crée un enregistrement à l'aide ModelAdmin save_model comme décrit ici. Je n'ai pas pu travailler sur la façon de l'obtenir autour de la kwarg erreur "enregistrer() a obtenu un inattendu argument mot-clé '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)
La la documentation états qui
"La save_model méthode est donné à l'HttpRequest, une instance du modèle, un
ModelForm instance et une valeur booléenne si c'est l'ajout d'
ou la modification de l'objet".
Est-ce quelque chose d'automatique, ou dois-je passer de la vue? Si ce n'est pas la question, alors quoi d'autre pourrait-il être?
EDIT: changé le code pour correspondre exemple.
Vous devez vous connecter pour publier un commentaire.
mise à jour
Si vous avez remplacé
save()
méthode deActivity
ou certains autres Modèles que vous enregistré en attendant, mais oublié d'accepterforce_insert
comme argument mot-clé, cette erreur peut se produire:Vérifier le trackback pour localiser l'échec de l'
save
Votre code n'a pas suivi le code de b-list.org, essayez:
save()
méthode deActivity
ou certains autres Modèles que vous enregistré aussi.En règle générale, vous ne devriez remplacer le
save()
méthode dans le modèle lui-même, non pas dans un modèle d'admin.En surchargeant la méthode save() dans un modèle, vous devez toujours utiliser
(*args, **kwargs)
pour être sûr. Vous n'avez aucun moyen de savoir lequel des paramètres spécifiques sont utilisés lorsqu'un modèle est enregistré.Votre
Activity
modèle doit contenir une méthode comme ceci: