最大列值我有3種相關機型:Django的ORM過濾器由兩個相關模型
Program(Model):
... # which aggregates ProgramVersions
ProgramVersion(Model):
program = ForeignKey(Program)
index = IntegerField()
UserProgramVersion(Model):
user = ForeignKey(User)
version = ForeignKey(ProgramVersion)
index = IntegerField()
PROGRAMVERSION和UserProgramVersion基於index
場訂購的型號 - 對象與表中的最高index
被認爲是最新/最新對象(這是由一些自定義邏輯處理的,不相關)。
我想選擇所有最新的UserProgramVersion,即最新的UPV的指向同一個程序。
這可以通過這個UserProgramVersion查詢集進行處理:
def latest_user_program_versions(self):
latest = self\
.order_by('version__program_id', '-version__index', '-index')\
.distinct('version__program_id')
return self.filter(id__in=latest)
這工作正常但即時尋找不使用.distinct溶液() 我想是這樣的:
def latest_user_program_versions(self):
latest = self\
.annotate(
'max_version_index'=Max('version__index'),
'max_index'=Max('index'))\
.filter(
'version__index'=F('max_version_index'),
'index'=F('max_index'))
return self.filter(id__in=latest)
但是這不起作用
我不認爲它「工作正常」沒有按用戶或用戶組過濾。如果你現在忽略它,你可能會得到一個答案,以後無法添加它。 – hynekcer