정기적으로 평가되는 거래자가 있습니다. 평가에는 상인에 대한 외래 키가 있습니다. 모든 거래자를 현재 평가 상태와 함께 나열하고 싶습니다. 이는 Trader 모델에 추가 된 맞춤 속성을 사용하여 가능합니다. 그러나 최신 평가 상태 (예 : 아직 열려있는 모든 현재 평가)에 대한 결과를 필터링 할 수 있기를 원합니다. 그러나 이전에 (Custom properties in a query) 표시된 것처럼 사용자 지정 모델 속성을 쿼리에 포함 할 수 없습니다.하위 모델의 최신 레코드를 쿼리에 포함시키는 방법
Trader 모델에 외래 키를 만들었지 만 가장 최근의 Evaluation의 ID를 기록하는 것은 가능하지 않습니다. 모델이 서로를 참조하고 순환 순서 문제가 발생하기 때문에 가능하지 않습니다. Trader는 평가를 말하지만 평가는 아직 선언되지 않았거나 평가를 먼저 수행하지만 Trader는 선언되지 않습니다.
지금까지 Trader를 기본 쿼리로 사용하고 Evaluations를 조회한다고 가정했습니다. 문제를 해결할 대안은 평가를 기반으로 쿼리를 만든 다음 대신 Traders를 조회하는 것입니다. 그러나 이것은 아직 평가되지 않은 트레이더가 결코 결과에 나타나지 않는다는 것을 의미합니다 (트레이더가 항상 최소한 하나의 평가 레코드를 보유하고 있지 않은 한). 또는 원시 SQL 사용에 의지 할 수 있습니다.
이 문제를 해결하는 방법에 대한 제안은 크게 감사하겠습니다.
Class Trader(models.Model):
territory = models.ForeignKey(Territory)
organisation_name = models.CharField(max_length=30)
contact_title = models.CharField(choices=TITLE_CHOICES, max_length=4)
contact_forename = models.CharField(max_length=30, blank=True)
contact_lastname = models.CharField(max_length=30)
...
def _get_current_evaluation(self):
return Evaluation.objects.filter(trader=self).latest('open_date')
current_evaluation = property(_get_current_evaluation)
Class Evaluation(models.Model):
trader = models.ForeignKey(Trader)
open_date = models.DateField("Open Date", null=True, blank=True)
rated_date = models.DateField("Rated Date", null=True, blank=True)
closed_date = models.DateField("Closed Date", null=True, blank=True)
status = models.ForeignKey(RatingStatus, null=True, blank=True)
...
감사합니다. 내 상거래 모델에 현재 상태를 추가하면 효과가있었습니다. 내가 너에게 추가 사항을 보았지만 ... – alj