我在使用Django的save()方法時遇到了一些麻煩。django save()方法在函數內部調用時什麼也不做
1/I有這個簡單的模型:
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
該代碼運行時沒有錯誤,但我沒有將模型保存到第e數據庫時,從第2步中的條件調用autoAddApplication函數。
我試圖通過直接將URL映射到此函數來直接調用此'autoAddApplication'函數,然後它可以工作,並且我的模型保存在D B。
我在這裏完全不解。當我在另一個函數中調用這個'autoAddApplication'函數時,爲什麼它不起作用?任何幫助將不勝感激。
編輯 我終於發現我做錯了什麼。 在後面的第2步中,我有一個u.save(),它確實保存了u(因此覆蓋了我在autoAddApplication函數中所做的更改)。 我通過傳遞給autoAddApplication函數解決了這個問題。
無論如何感謝您的幫助。
[PEP 8](http://www.python.org/dev/peps/pep-0008/)希望您將'userId'更改爲'user_id','appInstance'更改爲'app_instance','autoAddApplication ''auto_add_application'和'instanceMap'到'instance_map'。 (並且它也希望您將'get_object_or_404(User,userId = ...)'更改爲'... userId = ...'。) –
您是否正在使用正確的'User'模型?請記住,內置的用戶類也被命名爲'User',您不會導入? –
你確定函數被調用嗎? – DrTyrsa