说我有这些模型:
class MyModel(models.Model):
pass
class OtherModel(models.Model):
onetoone = OneToOneField(MyModel)
如果此处的obj
类型为MyModel
,我如何删除onetoone
以便我可以使用hasattr
- 稍后检查以查找该邮件不存在了吗?
还有其他方法可以找出onetoone
已被删除吗?
obj.onetoone.delete()
hasattr(obj, "onetoone") # This still returns True, but actually it should return False
答案 0 :(得分:0)
hasattr
将始终返回True,即使您从未创建过关系。在这里使用是不对的。
相反,您需要检查是否存在相关对象。
try:
obj.onetoone
except OtherModel.DoesNotExist:
print("does not exist")
答案 1 :(得分:0)
调用相关实例的refresh_from_db
即可。您可以通过覆盖相关模型的delete
使其透明。
class OtherModel(models.Model):
onetoone = OneToOneField(MyModel)
def delete(self, using=None, keep_parents=False):
result = self.delete(using, keep_parents)
self.onetoone.refresh_from_db()
return result