Programing

관련 객체가 존재하는지 장고 확인 오류 : RelatedObjectDoesNotExist

lottogame 2020. 12. 14. 07:46
반응형

관련 객체가 존재하는지 장고 확인 오류 : RelatedObjectDoesNotExist


has_related_object내 모델에 관련 개체가 있는지 확인해야하는 메서드 가 있습니다.

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

  def has_related_object(self):
        return (self.customers is not None) and (self.car is not None)


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

하지만 오류가 발생합니다.

Business.has_related_object ()

RelatedObjectDoesNotExist : 비즈니스에 고객이 없습니다.


ORM이 customer존재 하는지 확인하기 위해 데이터베이스로 이동해야하기 때문 입니다. 존재하지 않기 때문에 예외가 발생합니다.

방법을 다음과 같이 변경해야합니다.

def has_related_object(self):
    has_customer = False
    try:
        has_customer = (self.customers is not None)
    except Customer.DoesNotExist:
        pass
    return has_customer and (self.car is not None)

상황을 잘 모르기 self.car때문에 필요한 경우 조정하도록 맡기겠습니다.

사이드 참고 :에이 일을한다면 Model를 가지 ForeignKeyField거나 OneToOneField그 위에, 당신은 데이터베이스 쿼리를 피하기 위해 바로 가기로 다음을 수행 할 수있을 것입니다.

def has_business(self):
    return self.business_id is not None

Django 문서에서 권장hasattr(self, 'customers') 하는 예외 검사를 피하기 위해 사용하십시오 .

def has_related_object(self):
    return hasattr(self, 'customers') and self.car is not None

참고 URL : https://stackoverflow.com/questions/27064206/django-check-if-a-related-object-exists-error-relatedobjectdoesnotexist

반응형