Python 更改form.clean_数据中的数据

Python 更改form.clean_数据中的数据,python,django,session,models,Python,Django,Session,Models,我已经为此挣扎了几天了 我使用的是django Python,我的所有对象都有一个抽象对象,用户无法更改,也无法在页面中看到,但他在登录时会选择。 因此,当他登录时,他输入user、password并选择这个对象,我想确保页面中的所有内容都与该对象相关,因此当他使用另一个实例登录时,不会看到前面的实例 这是我的模型:(正如您所预测的,我的所有对象都有commonObject) 现在我的问题是我无法保存commonObject。请记住,我使用的是django smarter,这里是add\u视图c

我已经为此挣扎了几天了

我使用的是django Python,我的所有对象都有一个抽象对象,用户无法更改,也无法在页面中看到,但他在登录时会选择。 因此,当他登录时,他输入user、password并选择这个对象,我想确保页面中的所有内容都与该对象相关,因此当他使用另一个实例登录时,不会看到前面的实例

这是我的模型:(正如您所预测的,我的所有对象都有commonObject)

现在我的问题是我无法保存
commonObject
。请记住,我使用的是django smarter,这里是
add\u视图
code

action = self.action
form_kwargs = self.get_form_kwargs(action, request, *args, **kwargs)
if request.method == 'POST':
    form = self.get_form(action=action,
                        data=request.POST,
                        files=request.FILES,
                        **form_kwargs)
    if form.is_valid():
        form.cleaned_data['commonObject'] = pk.loads(request.session.get('commonObject'))
        print form.cleaned_data #Here the commonObject is the one that I want, but save doesn't seem to care
        instance = self.save_form(form)
        return self.add_success(request, instance)
else:
    form = self.get_form(action=action, **form_kwargs)
context = {'form': form}
return self.render_to_response(context)
我的方法是:

1) 在模型重写的
Save()
方法中保存
commonObject
。问题是我不能访问请求对象(既不能在会话中保存公共对象,也不能在用户对象的另一列中保存公共对象)

2) 更改
表单。清除数据
似乎不起作用。在这种方法中,我尝试序列化对象,我成功地用“pickable”实现了序列化,但是
Models.py
将以前的表单作为真实的表单,而不是我更改的表单

3) 使用
pre_save
post_save
,但我无法访问
Models.py
中的请求对象


你能帮我一下吗?

我认为你不能像你那样直接改变数据的格式。必须保存表单才能创建数据实例,但尚未提交,然后才能更改所需的数据。更改所需的所有内容后,保存它(使用提交)

e、 g.(非测试)

action = self.action
form_kwargs = self.get_form_kwargs(action, request, *args, **kwargs)
if request.method == 'POST':
    form = self.get_form(action=action,
                        data=request.POST,
                        files=request.FILES,
                        **form_kwargs)
    if form.is_valid():
        form.cleaned_data['commonObject'] = pk.loads(request.session.get('commonObject'))
        print form.cleaned_data #Here the commonObject is the one that I want, but save doesn't seem to care
        instance = self.save_form(form)
        return self.add_success(request, instance)
else:
    form = self.get_form(action=action, **form_kwargs)
context = {'form': form}
return self.render_to_response(context)
if form.is_valid():
    instance = form.save(commit=False)
    instance.commonObject = pk.loads(request.session.get('commonObject'))
    instance.save()
    return self.add_success(request, instance)