문제
다음과 같이 모델이 있습니다
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)
제휴하지 않습니다 StackOverflow