让我们考虑一下这个模型
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']
我的 View 添加了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),)
我得到一个
Column 'tutor_id' cannot be null
我做错了什么?
请您参考如下方法:
.将导师设置为form.instance
代替:
form.tutor = request.user
if form.is_valid():
form.save()
你应该:
form.instance.tutor = request.user
if form.is_valid():
form.save()
但个人而言,我宁愿在 form.is_valid() 之后、form.save() 之前调整 form.instance。
