我正在使用Django 1.10。使用相關模型的__max查找註釋查詢集
我有一對夫婦的模型,看起來像:
class Product(models.Model):
name = models.CharField(max_length=255)
...
class TransitionLog(models.Model):
TransitionStates =[
('state_one', _('State One')),
('state_two', _('State Two')),
('state_three', _('State Three'))
]
product = models.ForeignKey(Product)
transitioned_to = models.CharField(choices=TransitionStates, null=False, blank=False)
transitioned_timestamp = models.DateTimeField(auto_now_add=True)
而我想做的是最新的過渡狀態,這是TransitionLog
的transitioned_to
場註釋Product
查詢集。最新的國家將是最近的國家transitioned_timestamp
。
我做得到大多數的方式有以下幾點:
Product.objects.annotate(latest_transition=Case(When(transitionlog__pk=Max('transitionlog__pk'), then='transitionlog__transitioned_to')))
但是我擔心的還有就是Max()
只着眼於PK,並採取最高的國家之一,這爲我的目的工作,但我寧願做的是得到最新的transitioned_timestamp
。
問題是我不知道在找到最新的時間戳後如何在TransitionLog.pk
上做一個匹配。我知道我也可以在兩個查詢中做到這一點,分別獲取日誌和從那裏進行連接,但我也想避免這種情況。
任何人都可以提出一個辦法,我能得到通過時間戳過渡記錄中最近在單個查詢指定Product
?任何幫助,將不勝感激。謝謝!