문제

다음과 같이 모델이 있습니다

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)

내 modelform은 다음과 같습니다

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

내 기능은 양식을 표시하고 업데이트하는 이와 같이 보입니다.

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

DB의 user_id는 1입니다. 그러나 양식을 게시하면 결코 업데이트되지 않습니다. 나는 form.save ()가 거기에 인쇄를하기 때문에 호출되고 Dev 서버에 표시됩니다.

도움이 되었습니까?

해결책

Andy Hume은 귀하의 질문에 대한 의견에서 맞았습니다.

사용자 - 프리 정보 모델을 기반으로 한 modelform이 있지만 사용자 인스턴스를 전달하고 있습니다.

당신이하고 싶은 것은 이것입니다 :

form = PrivacyForm(request.POST, instance=UserPrivacy.objects.get(user=request.user)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top