从Views.py更新模型字段

时间:2020-04-27 21:43:43

标签: python django django-models django-forms django-views

我感觉这里缺少明显的语法相关内容,因此我向您道歉。

当用户成功处理表单时,我正在尝试更新其状态。

launch

我尝试了这两篇文章中提出的解决方案:

1. Editing model field from Views.py

2. Object has no attribute 'update'

,以及许多其他随机和过度创造性的组合。

有人碰巧知道此呼叫的正确语法吗?

2 个答案:

答案 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的实例。