【发布时间】:2016-12-03 07:26:26
【问题描述】:
我有 3 个模型:User、UserItem(m2m thourgh)和 Item。
User 可以创建Item。这会自动创建一个UserItem。
不同的User 可以看到Item,并将其添加到自己的项目列表中,创建另一个UserItem。
如果第一个 User 想要删除 Item,另一个 User 将不高兴 - 它需要保留,但对于最初的 User 来说似乎消失了。但是,如果只有一个User 仍然与之相关,那么Item 是可以安全删除的,并且应该删除以避免将死记录填满数据库。
我认为应该这样处理:
-
Item delete从User调用 API -
Itempre_delete检查item.user_set > 1 - 如果
True,手动删除UserItem,将Item留在原处。如果False,删除Item
这种方式UserItem 不会通过 API 公开,并且简化了对客户端的管理。
这是正确/常见的方法吗?如何用 Django 完成?我不确定如何在不引发异常的情况下防止 Item.delete() 在 pre_delete 内发生,但由于这是预期的行为,引发异常似乎不是正确的方法。
【问题讨论】:
标签: django django-models many-to-many django-rest-framework django-signals