Shi*_*dla 2 django postgresql distinct sql-order-by django-models
我有一个如下的模型
class ProductScore(models.Model):
client = models.ForeignKey(User)
created = models.DateTimeField(default=datetime.datetime.now)
score = models.IntegerField()
scale = models.ForeignKey(Product)
Run Code Online (Sandbox Code Playgroud)
截至目前,我正在使用以下查询来过滤掉上述模型中的重复项
scores = ProductScore.objects.filter(client=request.user).distinct('scale')
Run Code Online (Sandbox Code Playgroud)
通过上面的查询,它返回了唯一的结果,但是旧的(创建日期非常旧),我的意思是,例如,如果上面的表ProductScore有10个重复记录,其中5个是昨天创建的,其中5个是今天创建的,上面的查询返回5个昨天创建的唯一记录.
但我想要最近创建的记录(即今天)和独特的记录,所以我尝试如下
scores = ProductScore.objects.filter(client=request.user).order_by('created').distinct('scale')
Run Code Online (Sandbox Code Playgroud)
哪个不起作用,扔了一些 programming error exception
*** ProgrammingError: SELECT DISTINCT ON expressions must match initial ORDER BY expressions
LINE 1: SELECT DISTINCT ON ("product_productscore"."scale...
^
Run Code Online (Sandbox Code Playgroud)
那么如何才能从上表中获得最近创建的独特记录?
PostgreSQL要求你这样做:
ProductScore.objects.filter(client=request.user).order_by('scale', '-created').distinct('scale')
Run Code Online (Sandbox Code Playgroud)
... order by -created将为您提供最新的每个副本,但您的整体查询结果将按scale字段排序
| 归档时间: |
|
| 查看次数: |
2540 次 |
| 最近记录: |