How to add default value on django save form?
I have an object Task and a form that saves it. I want to automatically asign created_by field to the currently logged in user. So, my view is this:
def new_task(request, task_id=None):
message = None
if task_id is not None:
task = Task.objects.get(pk=task_id)
message = 'TaskOK'
submit = 'Update'
else:
task = Task(created_by = GPUser(user=request.user))
submit = 'Create'
if request.method == 'POST': # If the form has been submitted...
form = TaskForm(request.POST, instance=task)
if form.is_valid():
task = form.save(commit=False);
task.created_by = GPUser(user=request.user)
task.save()
if message == None:
message = 'taskOK'
return tasks(request, message)
else:
form = TaskForm(instance=task)
return custom_render('user/new_task.html',
{'form': form, 'submit': submit, 'task_id':task.id},
request)
The开发者_如何转开发 problem is, you guessed, the created_by field doesn't get saved. Any ideas? Thanks
You are creating GPUser
, but you don't save it. You must save it first, so it gets pk and only after that it can be assigned to a ForeignKey
. Try this:
task.created_by = GPUser.object.create(user=request.user)
or
gpuser = GPUser(user=request.user)
gpuser.save()
task.created_by = gpuser
精彩评论