python - Django中類似事務(wù)的實現(xiàn)方法?
問題描述
class Category(models.Model): c_name = models.CharField(max_length=100)class Item(models.Model): '''外鍵關(guān)聯(lián)到Category''' i_name = models.CharField(max_length=100) category = models.ForeignKey(’Category’, related_name=’items’, null=True, blank=True)
表結(jié)構(gòu)是這樣, 要實現(xiàn)在頁面上新建一個分類的時候, 可以在同一個頁面新建/編輯這個分類包含的項目和項目具體信息
目前想到的做法是, 頁面上有添加項目的按鈕, 點擊按鈕的時候就通過Ajax在數(shù)據(jù)庫中生成了新項目, 然后在保存分類的時候, 再把剛才的項目和分類做關(guān)聯(lián);但這樣做的問題是, 如果編輯/新建分類的時候刷新了頁面, 或者其他原因沒有最終點擊保存的話, 數(shù)據(jù)庫中會增加很多沒有外鍵的Item數(shù)據(jù)
請問實現(xiàn)這個功能更好的解決辦法是什么? 或者說有什么辦法, 判斷在分類沒有成功保存的情況下, 回滾之前建立的項目?
問題解答
回答1:我覺得頁面設(shè)計邏輯可以改一下,先完善分類信息,保存分類信息后,再在這個分類信息增加項目。這樣提交項目信息的時候分類信息肯定是有的。至于你說的情況,先創(chuàng)建項目,再賦予分類的話,肯定會產(chǎn)生無分類的項目,要不再加個頁面,查看所有無分類的項目,讓用戶去設(shè)置分類?
相關(guān)文章:
1. 關(guān)于nginx location配置的問題,root到底是什么2. angular.js - angularjs的自定義過濾器如何給文字加顏色?3. 關(guān)于docker下的nginx壓力測試4. docker鏡像push報錯5. angular.js - angular內(nèi)容過長展開收起效果6. linux - openSUSE 上,如何使用 QQ?7. linux - 升級到Python3.6后GDB無法正常運行?8. 并發(fā)模型 - python將進(jìn)程池放在裝飾器里為什么不生效也沒報錯9. 大家好,請問在python腳本中怎么用virtualenv激活指定的環(huán)境?10. python的前景到底有大?如果不考慮數(shù)據(jù)挖掘,機(jī)器學(xué)習(xí)這塊?
