Django - 自动填充非空白表单字段

时间:2012-03-28 13:31:47

标签: python django django-forms

让我们考虑一下这个模型

class Session(models.Model):
  tutor = models.ForeignKey(User)
  start_time = models.DateTimeField()
  end_time = models.DateTimeField()

我正在尝试发布start_timeend_time的值,并自动为当前登录用户提供tutor

我的表单实际上只管理start_timeend_time

class SessionForm(forms.ModelForm):
  class Meta:
    model = Session
    exclude = ['tutor']

我的观点添加了tutor

def post(request):
  """Session post"""
  if request.method == 'POST':
    form = SessionForm(request.POST)
    form.tutor = request.user
    if form.is_valid():
      form.save()
      obj = {'posted': True}
      return HttpResponse(json.dumps(obj), mimetype='application/json')
    else:
      return render_to_response('planner/editor.html',
          form, context_instance=RequestContext(request),)

我得到了

  

列'tutor_id'不能为空

我做错了什么?

1 个答案:

答案 0 :(得分:3)

。将导师设为 form.instance

而不是:

form.tutor = request.user
if form.is_valid():
  form.save()

你应该:

form.instance.tutor = request.user
if form.is_valid():
  form.save()

但是personnaly我宁愿调整form.is_valid()之后的form.instance,就在form.save()之前。