
class Category(models.Model): c_name = models.CharField(max_length=100) class Item(models.Model): """外键关联到 Category""" i_name = models.CharField(max_length=100) category = models.ForeignKey('Category', related_name='items', null=True, blank=True) 表结构是这样, 要实现在页面上新建一个分类的时候, 可以在同一个页面新建 /编辑这个分类包含的项目和项目具体信息
目前想到的做法是, 页面上有添加项目的按钮, 点击按钮的时候就通过 Ajax 在数据库中生成了新项目, 然后在保存分类的时候, 再把刚才的项目和分类做关联; 但这样做的问题是, 如果编辑 /新建分类的时候刷新了页面, 或者其他原因没有最终点击保存的话, 数据库中会增加很多没有外键的 Item 数据
请问实现这个功能更好的解决办法是什么? 或者说有什么办法, 判断在分类没有成功保存的情况下, 回滚之前建立的项目?
1 xiaket Apr 10, 2017 不如定期清理? |
3 eggshell Apr 10, 2017 为什么要点击的时候就新建一个 Item 呢?最终保存的时候再新建不行吗? |
4 vicalloy Apr 10, 2017 这个设计本身就有些问题。 - Category.name 修改时是直接修改原来 category 的 name 还是创建一个新的 category - 如果 Category.name 是否直接用原有的 Category ,还是重复创建一个 如果只需要 name 不一样就创建,你直接在 Item 里面判断就可以了。先根据 name 查询 category ,有直接关联,没有创建。在 item 编辑的时候不用区分到底是创建还是编辑。 |
5 phithon Apr 10, 2017 三楼+1 |
6 daveze Apr 11, 2017 为嘛不最后一步一起创建呢 |