Как добавить значение по умолчанию в форме сохранения Django? - PullRequest
0 голосов
/ 16 марта 2010

У меня есть объект Task и форма, которая его сохраняет. Я хочу автоматически назначить поле create_by текущему зарегистрированному пользователю. Итак, мое мнение таково:

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)

Проблема, как вы уже догадались, в поле create_by не сохраняется. Есть идеи? Спасибо

1 Ответ

2 голосов
/ 16 марта 2010

Вы создаете GPUser, но не сохраняете его. Сначала вы должны сохранить его, чтобы он получил pk, и только после этого его можно присвоить ForeignKey. Попробуйте это:

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

или

gpuser = GPUser(user=request.user)
gpuser.save()
task.created_by = gpuser
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...