관련 개체가 있는지 확인하는 장고 오류: RelatedObjectDesNotExist
방법이 있습니다.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()
관련 개체가 존재하지 않음:거래처가 없습니다.
사용하다hasattr(self, 'customers')
Django 문서에서 권장하는 예외 검사를 피하려면:
def has_related_object(self):
return hasattr(self, 'customers') and self.car is not None
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
오래된 질문이지만, 특히 OneToOne 관계를 확인하고 싶을 때 이런 유형의 예외를 처리하려는 사람에게 도움이 될 수 있다고 생각했습니다.
나의 해결책은ObjectDoesNotExist
부터django.core.exceptions
:
from django.core.exceptions import ObjectDoesNotExist
class Business(base):
name = models.CharField(max_length=100, blank=True, null=True)
def has_related_object(self):
try:
self.customers
self.car
return True
except ObjectDoesNotExist:
return False
class Customer(base):
name = models.CharField(max_length=100, blank=True, null=True)
person = models.OneToOneField('Business', related_name="customer")
디버그하는 동안 사용자를 생성했을 수도 있고 프로파일이 없기 때문에 지금 자동화를 코딩한 후에도 프로파일이 없습니다. signal.py 파일의 아래 코드를 시도한 다음 수퍼유저를 생성하고 수퍼유저로 로그인한 다음 첫 번째 계정의 프로파일을 추가합니다.그게 내겐 통했어요
@receiver(post_save, sender=User, dispatch_uid='save_new_user_profile')
def save_profile(sender, instance, created, **kwargs):
user = instance
if created:
profile = UserProfile(user=user)
profile.save()
언급URL : https://stackoverflow.com/questions/27064206/django-check-if-a-related-object-exists-error-relatedobjectdoesnotexist
'programing' 카테고리의 다른 글
Oracle sql에서 새 줄 제거 (0) | 2023.09.07 |
---|---|
마리아의 줄 위 자물쇠DB (0) | 2023.09.07 |
동일한 시스템 내의 여러 프로젝트에 대해 여러 사용자 이름을 가져옵니다. (0) | 2023.09.07 |
Excel에서 고유 값 계산 (0) | 2023.09.07 |
AbstractAnnotationConfigDispatcherServlet을 사용하는 경우이니셜라이저 및 웹어플리케이션이니셜라이저? (0) | 2023.09.07 |