2010-03-16 32 views
0

我有一個對象任務,並且將其保存的表單。我想自動將created_by字段賦值給當前登錄的用戶。所以,我的看法是這樣的:如何在django保存表單上添加默認值?

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) 

問題是,你猜,created_by字段沒有得到保存。有任何想法嗎?由於

回答

2

你正在創建GPUser,但你不救它。你必須先保存它,所以它得到的PK後,纔可以分配給ForeignKey。試試這個:

task.created_by = GPUser.object.create(user=request.user) 

gpuser = GPUser(user=request.user) 
gpuser.save() 
task.created_by = gpuser 
+0

OK,我是個白癡。 GPUser實際上是用戶的配置文件,我需要的是找回創建一個新的,與其。 – Nacho 2010-03-16 14:53:39