让我们考虑一下这个模型
class Session(models.Model):
tutor = models.ForeignKey(User)
start_time = models.DateTimeField()
end_time = models.DateTimeField()
我正在尝试发布start_time
和end_time
的值,并自动为当前登录用户提供tutor
。
我的表单实际上只管理start_time
和end_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'不能为空
我做错了什么?
答案 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()之前。