更正:我说删除根本不起作用。那是错的。对于相同的对象/记录,它大部分时间都有效。它只是不稳定:尽管没有任何错误,但数以千计的电话中有几百个不会被删除。
所以,这将是一个非常奇怪的问题,看看这个案例:
if 'locations' in bundle.data:
bundle.obj.locations.all().delete()
for i, loc in enumerate(bundle.data['locations'], start=1):
loc['order'] = i
bundle.obj.locations.create(**loc)
第二行不起作用。没有错误,根本没有删除。然后我尝试了这个:
if 'locations' in bundle.data:
cursor.execute("DELETE FROM bookings_bookinglocation WHERE booking_id='%s'" % bundle.obj.pk)
connection.commit()
for i, loc in enumerate(bundle.data['locations'], start=1):
# ...
上述方法效果更好,但仍然经常忽略删除。
我知道这是无视的,因为在我的许多测试中,我有足够的注意力来检查.delete()调用之前和之后的ID,它们是相同的,如下所示:
if 'locations' in bundle.data:
ids_before = bundle.obj.locations.values("id")
bundle.obj.locations.all().delete()
ids_after = bundle.obj.locations.values("id")
# ...
配置:
有什么想法吗?谢谢!