Let’s consider this model
class Session(models.Model):
tutor = models.ForeignKey(User)
start_time = models.DateTimeField()
end_time = models.DateTimeField()
I’m trying to post values for start_time and end_time and automatically give tutor the current logged in user.
My form is actually managing only start_time and end_time
class SessionForm(forms.ModelForm):
class Meta:
model = Session
exclude = ['tutor']
And my view adds the 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),)
I’m getting a
Column ‘tutor_id’ cannot be null
What am I doing wrong ?
.Set tutor to form.instance
Instead of:
You should have:
But personnaly I’d rather tweak form.instance after form.is_valid(), just before form.save().