Frage

Ich habe ein Modell wie folgt

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)

Meine Modelform ist wie folgt

class PrivacyForm(ModelForm):
    class Meta:
        model = UserPrivacy
        exclude = ('user','location')

Meine Funktion sieht wie folgt um das Formular anzuzeigen und zu aktualisieren.

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))

Meine user_id in der db 1 .. aber wenn ich ein Formular veröffentlichen wird es nie aktualisiert. Ich weiß form.save () auf Grund setzen einen Druck aufgerufen wird dort und es wird in dem Dev-Server angezeigt.

War es hilfreich?

Lösung

Andy Hume war richtig in den Kommentaren zu Ihrer Frage.

Sie haben eine Modelform auf dem UserPrivacy Modell basiert, aber Sie es eine Instanz von Benutzern sind vorbei.

Was Sie tun möchten, ist dies:

form = PrivacyForm(request.POST, instance=UserPrivacy.objects.get(user=request.user)
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top