【问题标题】:django set user object as field value on form submitdjango 在表单提交时将用户对象设置为字段值
【发布时间】:2016-04-22 23:45:37
【问题描述】:

我的模型有一个用户模型所需的外键。在提交表单时,我想将登录用户保存为提交者。

在我看来:

def myview(request):
  if request.method == 'POST':
    form = MyForm(request.POST)
    myuser = User.objects.get(id=request.user.id)
    form.submitter_field = myuser
    if form.is_valid()
      #this prints a failed message saying submitter_field is required

【问题讨论】:

    标签: django


    【解决方案1】:

    这样的事情可能对你有用。您可以从请求会话中获取用户 ID,而无需运行用户查询。

    if form.is_valid(): 
        f = form.save(commit=false)
        f.submitter_field = request.user
        f.save()
    

    【讨论】:

    • 提交者字段是必填项,所以在设置字段之前我不能调用is_valid()。在is_valid() 之前执行form.save(commit=False) 会抛出错误:could not be created because the data didn't validate.
    • 如果您的表单需要提交者字段,只需将其从表单中删除或将提交者字段设置为必需=False。您还可以通过 form = MyForm(request.POST or None, initial={ 'submitter': request.user}) 在表单中为提交者字段设置初始值
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-11-13
    • 1970-01-01
    • 1970-01-01
    • 2017-04-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多