如何使用user.id将值保存到数据库Djang

2024-09-28 21:03:27 发布

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

我想保存用户输入到存储库中的值。但是如果用户已经输入了一个值,我希望它更新

它正在保存数据。但它无法更新

我在用Django

表单.py

    class Meta():
        model = UserProfileInfo
        fields = ('apikey', 'apivalue', 'apisupplier')

视图.py

def user_set_api(request):
    if request.method == 'POST':
        username = request.POST.get('username')
        password = request.POST.get('password')
        user = authenticate(username=username, password=password)
        current_user = request.user
        user_form = UserProfileInfoForm(data=request.POST)
        user_id = current_user.id
        print('UserId:', user_id)
        if user_form.is_valid() and user_id:
            user_form.save(request.user)
            print('User: ', user, 'Userformid:', UserProfileInfo(['user_id']))
        else:
            print(user_form)
    else:
        keysvalue = UserProfileInfoForm()
    return render(request, 'form.html',
                  {'apisupplier': UserProfileInfo})

型号.py

    user = models.OneToOneField(User, default=None, null=True, on_delete=models.CASCADE)
    apisupplier = models.CharField(max_length=40, blank=True, default="null")
    apikey = models.CharField(max_length=40, blank=True, default="null")
    apivalue = models.CharField(max_length=40, blank=True, default="null")

    def __str__(self):
        template = '{0.user} {0.apikey} {0.apivalue} {0.apisupplier}'
        return template.format(self)```

Tags: pyformidtruedefaultmodelsrequestusername
1条回答
网友
1楼 · 发布于 2024-09-28 21:03:27

我不知道为什么要将用户id传递给form.save()。您需要将用户对象传递给窗体实例化:

if request.method == 'POST':
    ...
    user_form = UserProfileInfoForm(data=request.POST, instance=request.user)
    if user_form.is_valid()
        user_form.save()
        ...
else:
    user_form = UserProfileInfoForm(instance=request.user)
return render(request, 'form.html',
              {'apisupplier': UserProfileInfo, "user_form": user_form})

相关问题 更多 >