Django의 기본 모델에서 데이터를 상속하고 필터링하는 방법은 무엇입니까?
예를 들어, 내 기본 모델은 다음과 같습니다.
class Customers(models.Model):
Time_Registered = models.DateField(blank=False)
Number = models.CharField(max_length=500)
Name = models.CharField(max_length=250)
Locations = models.ForeignKey(Locations, on_delete=models.CASCADE)
내가 원하는 것은 다음과 같이 한 위치와 관련된 고객 정보를 포함하는 다른 모델을 만드는 것입니다.
Class Canada(Customers):
class Meta:
proxy = True
# filter by Canada'
사용자 지정 관리자 를 사용하여이 작업을 수행 할 수 있습니다 .
문서의 예를 필요에 맞게 사용자 정의 할 수 있습니다. 예를 들면 다음과 같습니다.
class CanadaCustomerManager(models.Manager):
def get_queryset(self):
# Adapt the query to your needs
return super().get_queryset().filter(location__name="Canada")
그런 다음 모델 중 하나 ( Customers
또는 Canada
) 에서 관리자를 인스턴스화합니다 .
사용자 지정 관리자를 정의하려는 경우에는 실제로 새 프록시 모델을 정의 할 필요가 없습니다. 예를 들어 다음 Customers
과 같이 모델 에서 사용할 수 있습니다 .
class Customers(models.Model):
Time_Registered = models.DateField(blank=False)
Number = models.CharField(max_length=500)
Name = models.CharField(max_length=250)
Locations = models.ForeignKey(Locations, on_delete=models.CASCADE)
from_canada = CanadaCustomerManager()
그런 다음 예를 들어 객체를 검색하는 데 사용합니다.
>>> Customers.from_canada.all()
참고로 Django를 사용하는 경우 규칙은 모델 클래스를 단수 명사 (즉 Customer
, 아님 Customers
) 로 선언하는 것 입니다. 이는 db 테이블에 모든 고객이 포함되어 있어도 모델의 각 인스턴스가 단일 고객을 나타 내기 때문입니다.
또한 속성 이름은 일반적으로 대문자 (예 : time_registered
대신 Time_Registered
) 를 사용하지 않고 선언됩니다 .
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다