当从函数内调用时,django save()方法不执行任何操作

时间:2011-11-08 11:25:33

标签: python django django-models

我在使用Django的save()方法时遇到了一些麻烦。

1 /我有这个简单的模型:

class User (models.Model):
    userId = models.IntegerField()
    appInstance = models.TextField(null=True, blank=True)

2 /然后在视图中,我检查appInstance是否存在,如果不存在,我会调用函数:

if not u.appInstance:
    instance = autoAddApplication(request)

3 /和autoAddApplication定义如下:

def autoAddApplication(request):

    session = request.session
    user = get_object_or_404(User, userId = session['user_id'])
    ## do stuff here and end up with an 'instanceMap' dictionary

    user.appInstance = simplejson.dumps(instanceMap)
    user.save()
    return instanceMap

代码运行时没有错误,但是当从步骤2中的条件调用autoAddApplication函数时,我没有将模型保存在数据库中。

我试图通过直接将URL映射到此函数来直接调用此'autoAddApplication'函数,然后它确实有效,我将我的模型保存在数据库中。

我在这里完全不解。当我从另一个函数中调用这个'autoAddApplication'函数时,为什么它不起作用?任何帮助将不胜感激。


EDIT 我终于找到了我做错的事。 后来在第2步中我有一个u.save()确实在保存你(因此覆盖了我在autoAddApplication函数中所做的更改)。 我通过将你传递给autoAddApplication函数来解决它。

无论如何,谢谢你的帮助。

2 个答案:

答案 0 :(得分:0)

如何在视图中使用 autoAddApplication 作为私有函数?

    def _auto_add_application(session):
        user = get_object_or_404(User, user_id = session['user_id'])
        user.app_instance = simplejson.dumps(instance_map)
        user.save()
        return instance_map

答案 1 :(得分:0)

尝试将类名从User更改为MyUser或类似名称,您可能会遇到Django中定义的User模型的问题。