我感觉这里缺少明显的语法相关内容,因此我向您道歉。
当用户成功处理表单时,我正在尝试更新其状态。
launch
我尝试了这两篇文章中提出的解决方案:
1. Editing model field from Views.py
2. Object has no attribute 'update'
,以及许多其他随机和过度创造性的组合。
有人碰巧知道此呼叫的正确语法吗?
答案 0 :(得分:1)
Account.objects.filter()
将返回 QuerySet 而不是Account对象。您需要使用get()
或filter()[0]
(如果您知道该帐户存在);如果不确定是否存在,可以使用get_or_create()
如果您想更新当前用户的特定帐户状态,您需要做的是:
步骤1:获取要更新的帐户
# you can get it by searching from Account
account = Account.objects.get(user=request.user)
# or you can can it directly from the request.uer
account = request.user.account
第2步:更新字段
account.status = 'B' # set it to whatever you want to update
account.save() # you need to use save() because there is no update() in a model object
答案 1 :(得分:1)
您需要将更改保存到Account
实例,例如
def View(request):
if request.POST:
form = Form(request.POST, instance=request.user)
if form.is_valid():
form.initial = {"value": request.POST['value'],}
form.save()
a = Account.objects.get(user=request.user)
a.update(status='B')
# or
#a.status = 'B'
a.save()
return redirect('status')
并且正如@MarkLiang所指出的,filter
返回一个QuerySet,而不是单个
Account
的实例。