【问题标题】:How to add default value on django save form?如何在 django 保存表单上添加默认值?
【发布时间】:2011-01-28 03:45:00
【问题描述】:

我有一个对象任务和一个保存它的表单。我想自动将 created_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)

问题是,你猜到了,created_by 字段没有被保存。有任何想法吗?谢谢

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    您正在创建GPUser,但您没有保存它。您必须先保存它,这样它才能获得 pk,然后才能将其分配给 ForeignKey。试试这个:

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

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

    【讨论】:

    • 好吧,我是个白痴。 GPUser 实际上是用户的个人资料,我需要的是检索它而不是创建一个新的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-05
    • 2010-09-21
    • 2020-12-23
    • 2021-09-05
    • 1970-01-01
    • 2020-01-22
    • 2014-01-22
    相关资源
    最近更新 更多