问题 Django RelatedObjectDoesNotExist错误


我看不到让这个工作......

我有一个方法 has_related_object 在我的模型中需要检查相关对象是否存在...

class Business(base):
      name =  models.CharField(max_length=100, blank=True, null=True)


  def has_related_object(self):
    has_customer = False
    has_car = False

    try:
        has_customer = (self.customer is not None)
    except Business.DoesNotExist:
        pass

    try:
        has_car = (self.car.park is not None)
    except Business.DoesNotExist:
        pass

    return has_customer and has_car



class Customer(base):
      name =  models.CharField(max_length=100, blank=True, null=True)
      person = models.OneToOneField('Business', related_name="customer")

错误

RelatedObjectDoesNotExist Business没有客户。

我需要检查这些相关对象是否存在,但是在业务对象方法中


12270
2017-11-21 15:34


起源

你的问题是什么?谢谢。 - alecxe
我需要检查这些相关对象是否存在,但是在业务对象方法中 - Prometheus


答案:


陷阱 except Business.DoesNotExist 但这并不是被抛出的例外。每 这个答案 你想要抓住将军 DoesNotExist 异常。

编辑:请参阅下面的评论:实际的异常被捕获 DoesNotExist 因为他们继承了 DoesNotExist。你最好捕获真正的异常而不是压制任何和所有异常 DoesNotExist 相关模型的例外情况。


12
2017-11-21 15:50



为了记录,提出的例外是 Customer.DoesNotExist 在第一种情况下 Car.DoesNotExist 在第二。 - bruno desthuilliers
是否有一个函数返回一个我可以调用而不是捕获错误的布尔值?喜欢 model.DoesExists(other_model) - Jeremy
刚才意识到我可以在上面调用hasattr ......所以没关系 - Jeremy
@JeremyCraigMartinez ohh yaaa我的问题只需通过电话即可解决 hasattr, 谢谢! - Adiyat Mubarak
@ИскренСтаниславов - 进行什么样的测试以及会发生什么? - Tom