Django表单不覆盖上一个条目

2024-05-16 23:31:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在使用Django中的一个表单让用户输入一个API密钥,然后保存该密钥。然而。我想让用户有机会在以后更改此密钥,或者添加一个,如果他们已经这样做了。但是,当我尝试输入一个新的API键时,它不会覆盖上一个条目。你知道吗

这是我的型号.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

这是我的表单.py文件:

class ChangeApiForm(forms.ModelForm):
    quandl_api = forms.CharField(required=True)

    class Meta:
        model = UserProfile
        fields = ('quandl_api',)    

这是我的视图.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键之后,页面将刷新并将我带到在中指定的“accounts页面”视图.py文件。但是那里的API密钥仍然是旧的。你知道吗


Tags: 文件pyformapi表单newreturnmodels
1条回答
网友
1楼 · 发布于 2024-05-16 23:31:12

您应该将UserProfile对象作为实例传递,而不是作为用户传递。你知道吗

new_api_form = ChangeApiForm(request.POST, instance=request.user.userprofile)

相关问题 更多 >