我有一个名为TimeSpan
的Django模型,其中包含start_datetime
和end_datetime
字段,我想对模型进行验证,以便没有两个TimeSpan
个对象重叠。
但是,如果我编写如下代码,
if timespan.is_valid():
timespan.save()
然后可能存在竞争条件,其中两个TimeSpan
对象被认为与数据库中当前的对象相比是有效的,然后尽管它们一起无效,它们都被保存。
我可以使用锁创建一个同步的validate_and_save()
方法,但这会破坏Django管理员。有没有内置于Django的替代方案?
答案 0 :(得分:1)
如果你朝这个方向前进,你需要使用交易,但我建议你看一下数据库的触发功能......