Python 如何在Django中验证对象创建?

Python 如何在Django中验证对象创建?,python,django,Python,Django,我想验证我创建的对象是否真的被创建,并根据以下内容返回True或False: obj = object(name='plop') try: obj.save() return True except ???: return False 如何验证对象创建?首先,这不是一个好的实践 第二,发生异常的唯一情况是数据库连接失败或未设置某些约束或必填字段。。在这种情况下,将引发db-backend.OperationalError 更新:约束失败时,首先会出现IntegrityError异常——

我想验证我创建的对象是否真的被创建,并根据以下内容返回True或False:

obj = object(name='plop')
try:
 obj.save()
 return True
except ???:
  return False

如何验证对象创建?

首先,这不是一个好的实践

第二,发生异常的唯一情况是数据库连接失败或未设置某些约束或必填字段。。在这种情况下,将引发db-backend.OperationalError


更新:约束失败时,首先会出现IntegrityError异常

——这不是一个好的做法

第二,发生异常的唯一情况是数据库连接失败或未设置某些约束或必填字段。。在这种情况下,将引发db-backend.OperationalError

更新:约束失败时,存在IntegrityError异常

save()还可能引发其他异常,例如django 1.2中的ValidationError,或者如果已重写save()方法,则会引发任何任意异常

我认为尝试save()并捕获异常没有什么特别的错误。如果出于某种原因,您更喜欢检查布尔返回值,而不是仅仅捕获异常(在python中通常不是这样做的),那么您的想法是正确的。仅更改例外???:更改为例外:

毕竟,您希望在任何预期失败时返回False。

save()还可能引发其他异常,例如django 1.2中的ValidationError,或者如果save()方法已被重写,则会引发任何任意异常

我认为尝试save()并捕获异常没有什么特别的错误。如果出于某种原因,您更喜欢检查布尔返回值,而不是仅仅捕获异常(在python中通常不是这样做的),那么您的想法是正确的。仅更改例外???:更改为例外:


毕竟,对于任何预期的故障,您都希望返回False。

谢谢您的回答。你能让我知道什么是错误的做法,以便我可以提高吗?干杯。因为当一些不好的事情发生,你只是返回错误,你将不知道到底发生了什么(并将调试大量的时间来理解错误)-有很多要说的。。只要看看有经验的开发人员的文档和意见,为什么不将try块移到调用者中,而不是检查布尔值呢?这在python中是首选的,原因有很多。返回值检查是一种C编程实践,通常不适用于任何支持异常的语言。谢谢您的回答。你能让我知道什么是错误的做法,以便我可以提高吗?干杯。因为当一些不好的事情发生,你只是返回错误,你将不知道到底发生了什么(并将调试大量的时间来理解错误)-有很多要说的。。只要看看有经验的开发人员的文档和意见,为什么不将try块移到调用者中,而不是检查布尔值呢?这在python中是首选的,原因有很多。返回值检查是一种C编程实践,通常不适用于任何支持异常的语言。谢谢。是的,如果失败,这个想法就是返回False。失败的原因并不重要。我想我可以记录异常的原因,但真/假结果稍后将通过xmlrpc发送,并且永远不会显示在用户屏幕上。除例外情况外,我将使用。谢谢。是的,那是其中一个可以捕捉异常的地方。如果使用django 1.2,您可能还希望捕获ValidationError和IntegrityError,并通过xmlrpc返回合理的错误消息(或封送异常)。谢谢。是的,如果失败,这个想法就是返回False。失败的原因并不重要。我想我可以记录异常的原因,但真/假结果稍后将通过xmlrpc发送,并且永远不会显示在用户屏幕上。除例外情况外,我将使用。谢谢。是的,那是其中一个可以捕捉异常的地方。如果使用django 1.2,您可能还希望捕获ValidationError和IntegrityError,并通过xmlrpc返回一条合理的错误消息(或封送异常)