我目前在Django中使用表单,要求用户输入API密钥,然后将其保存。然而。我想让用户有机会在以后更改此密钥,或者如果他们已经这样做了,可以添加一个。但是,当我尝试输入新的API密钥时,它不会覆盖以前的条目。
这是我的models.py文件:
from django.contrib.auth.models import User
class UserProfile(models.Model):
user = models.OneToOneField(User)
quandl_api = models.CharField(max_length=30, blank=True)
def __unicode__(self):
return self.user.username
这是我的forms.py文件:
class ChangeApiForm(forms.ModelForm):
quandl_api = forms.CharField(required=True)
class Meta:
model = UserProfile
fields = ('quandl_api',)
这是我的views.py文件:
@login_required
def change_api(request):
context = RequestContext(request)
registered = False
if request.POST:
new_api_form = ChangeApiForm(request.POST, instance=request.user)
if new_api_form.is_valid():
new_api_form.save()
return HttpResponseRedirect('/account')
else:
new_api_form = ChangeApiForm()
return render_to_response('ui/change_api.html', {'new_api_form': new_api_form}, context_instance=RequestContext(request))
提交表单以输入新的API密钥后,页面将刷新,并带我到views.py文件中指定的“帐户页面”。但是API密钥仍然是旧的。
您应该将UserProfile对象而不是用户作为实例传递。
new_api_form = ChangeApiForm(request.POST, instance=request.user.userprofile)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句