J'ai un modèle comme suitmise à jour django ModelForm
class UserPrivacy(models.Model):
user = models.ForeignKey(User)
profile = models.SmallIntegerField(default=1, choices=PRIVACY_TYPE)
contact = models.SmallIntegerField(default=1, choices=PRIVACY_TYPE)
friends = models.SmallIntegerField(default=1, choices=PRIVACY_TYPE)
location = models.SmallIntegerField(default=1, choices=PRIVACY_TYPE)
Mon ModelForm est la suivante
class PrivacyForm(ModelForm):
class Meta:
model = UserPrivacy
exclude = ('user','location')
Ma fonction ressemble à ceci pour afficher et mettre à jour le formulaire.
def show_privacy(request):
if not request.user.is_authenticated():
return HttpResponseRedirect('/')
if request.method == 'POST':
form = PrivacyForm(request.POST, instance=User.objects.get(pk=request.session['id']))
if form.is_valid():
form.save()
else:
form = PrivacyForm()
return render_to_response('settings_privacy.html', {'form': form}, context_instance=RequestContext(request))
Mon ID utilisateur dans la base de données est 1 .. mais lorsque je publie un formulaire, il n'est jamais mis à jour. Je sais que le fichier form.save() est appelé en raison d'une impression et il est affiché dans le serveur de développement.
je pourrais être un peu rouillé sur les formes, mais pourquoi êtes-vous passer un objet utilisateur dans le formulaire UserPrivacy? Ne passeriez-vous pas normalement dans une instance UserPrivacy? –
Je souhaite mettre à jour les éléments en fonction de l'utilisateur connecté. – Mike
Mais comment les champs du modèle User correspondent-ils aux champs du modèle UserPrivacy? Essayez-vous simplement de définir le champ utilisateur du formulaire UserPrivacy? –