2009-09-01 8 views
0

J'ai un modelform avec un champ user_id que j'ai exclu du formulaire. Ce formulaire est transformé en un modèle de modèle. La raison pour laquelle le champ d'utilisateur est exclu est parce que ce n'est pas une valeur modifiable. Je ne veux pas que cette valeur passe au formulaire HTML où il peut être trafiqué par un utilisateur méchant.Insertion de valeurs dans un formset

Lorsque j'essaie de sauvegarder ce formset de modèle, j'obtiens une erreur indiquant que user_id ne peut pas être nul. J'ai besoin d'ajouter un request.user à chaque formulaire avant de sauvegarder ce formset dans la vue. Comment puis-je faire ceci? Je sais comment ajouter la valeur à une seule instance d'un modelform, mais je n'arrive pas à comprendre comment le faire avec un formset.

Répondre

1

Si vous ne transmettez pas request.user pour former, il n'y a pas de manière directe que vous pouvez l'obtenir dans la méthode save du formulaire.

Cependant, il existe un moyen, si vous souhaitez que l'utilisateur soit disponible directement à la méthode de sauvegarde du formulaire, en dehors du contexte. Découvrez, http://code.djangoproject.com/wiki/CookBookThreadlocalsAndUser.

1

Lorsque vous enregistrez formset remeber à:

if formset.is_valid(): 
    instances = formset.save(commit=False) 
    for instance in instances: 
     instance.user_id = request.user.id 
     instance.save() 

Vous devez pas autre chose. BTW Je ne comprends pas pourquoi enregistrer l'ID utilisateur pas l'objet utilisateur?

Questions connexes