django中的save()方法在函数内调用时无效
我在使用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'时,它就不工作呢?任何帮助都将不胜感激。
编辑 我终于找到了我做错的地方。 在第2步中,我有一个u.save(),这确实保存了u(因此覆盖了我在autoAddApplication函数中所做的更改)。 我通过将u传递给autoAddApplication函数解决了这个问题。
无论如何,感谢你的帮助。
2 个回答
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
试着把类的名字从 User
改成 MyUser
或者其他类似的名字,可能是你在使用Django时遇到了 User
模型的问题。