python - Django中類似事務(wù)的實(shí)現(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)是這樣, 要實(shí)現(xiàn)在頁面上新建一個(gè)分類的時(shí)候, 可以在同一個(gè)頁面新建/編輯這個(gè)分類包含的項(xiàng)目和項(xiàng)目具體信息
目前想到的做法是, 頁面上有添加項(xiàng)目的按鈕, 點(diǎn)擊按鈕的時(shí)候就通過Ajax在數(shù)據(jù)庫中生成了新項(xiàng)目, 然后在保存分類的時(shí)候, 再把剛才的項(xiàng)目和分類做關(guān)聯(lián);但這樣做的問題是, 如果編輯/新建分類的時(shí)候刷新了頁面, 或者其他原因沒有最終點(diǎn)擊保存的話, 數(shù)據(jù)庫中會(huì)增加很多沒有外鍵的Item數(shù)據(jù)
請問實(shí)現(xiàn)這個(gè)功能更好的解決辦法是什么? 或者說有什么辦法, 判斷在分類沒有成功保存的情況下, 回滾之前建立的項(xiàng)目?
問題解答
回答1:我覺得頁面設(shè)計(jì)邏輯可以改一下,先完善分類信息,保存分類信息后,再在這個(gè)分類信息增加項(xiàng)目。這樣提交項(xiàng)目信息的時(shí)候分類信息肯定是有的。至于你說的情況,先創(chuàng)建項(xiàng)目,再賦予分類的話,肯定會(huì)產(chǎn)生無分類的項(xiàng)目,要不再加個(gè)頁面,查看所有無分類的項(xiàng)目,讓用戶去設(shè)置分類?
相關(guān)文章:
1. 我在centos容器里安裝docker,也就是在容器里安裝容器,報(bào)錯(cuò)了?2. docker-compose中volumes的問題3. docker不顯示端口映射呢?4. golang - 用IDE看docker源碼時(shí)的小問題5. 在windows下安裝docker Toolbox 啟動(dòng)Docker Quickstart Terminal 失敗!6. docker容器呢SSH為什么連不通呢?7. javascript - 最近用echarts做統(tǒng)計(jì)圖時(shí)遇到兩個(gè)問題!!8. mac里的docker如何命令行開啟呢?9. javascript - 連續(xù)點(diǎn)擊觸發(fā)mouseleave事件10. 關(guān)docker hub上有些鏡像的tag被標(biāo)記““This image has vulnerabilities””

網(wǎng)公網(wǎng)安備