我有经常评估的交易者。评估对交易者有一个外键。我想列出所有交易者以及他们当前的评估状态。这可以使用添加到交易者模型的自定义属性。但是,我希望能够过滤最新评估状态的结果(例如,所有当前评估仍处于打开状态)。但是,如前所示(Custom properties in a query),您不能在查询中包含自定义模型属性。如何将儿童模型中的最新记录包含到查询中
我会在Trader模型中创建一个外键,记录最新评估的id,但这不可能,因为这样模型会相互引用,然后进入循环排序问题在创建类时,即交易者提到评估,但尚未宣布评估,或者先评估,但未声明交易者。
到目前为止,我认为我会使用交易者作为我的基本查询,并查找评估。我认为解决问题的另一种方法是基于评估创建查询,然后查找交易者。然而,这意味着那些尚未评估过的交易者将永远不会出现在结果中(除非我确定交易者总是至少有一个评估记录)。或者我想我可以诉诸使用原始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 2011-03-30 13:07:25