我在使用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函数来解决它。
无论如何,谢谢你的帮助。
答案 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
模型的问题。