Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Django RelatedObjectDoesNotExist error

Tags:

python

django

I cannot see to get this to work...

I have a method has_related_object in my model that needs to check if a related object exists...

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")

Error

RelatedObjectDoesNotExist Business has no customer.

I need to check if these related objects exist but from within the business object method

like image 767
Prometheus Avatar asked Nov 21 '14 15:11

Prometheus


1 Answers

You're trapping except Business.DoesNotExist but that's not the exception that's being thrown. Per this SO answer you want to catch the general DoesNotExist exception instead.

EDIT: see comment below: the actual exceptions are being caught by DoesNotExist because they inherit from DoesNotExist. You're better off trapping the real exception rather than suppressing any and all DoesNotExist exceptions from the involved models.

like image 132
Tom Avatar answered Nov 07 '22 13:11

Tom