相关疑难解决方法(0)

django 在 manytomany 字段上使用 order_by() 在分页中重复

我正在对来自 manytomany 对象的时间字段进行排序,但在分页过程中遇到问题。

模型.py:

class Validated(models.Model):
    job_id_list = models.ManyToManyField(JobId , related_name='JobId', blank=True)  

class JobId(models.Model):
    user = models.ForeignKey(User, blank=True, null=True, default=None)
    job_time = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

视图.py:

results_list = Validated.objects.filter(job_id_list__user=request.user).\
               distinct().order_by('-job_id_list__job_time')
Run Code Online (Sandbox Code Playgroud)

我的问题是分页搞砸了,即使查询输出正常,我的分页输出中也会出现重复项。(其他这个问题

我尝试了几种解决方案,但我的问题没有得到解决,因为排序是基于多对多对象的字段 order_by('job_id_list__job_time')

我正在考虑通过annotation使用Model.Manager. 在此注释中,我尝试添加job_time模型内部函数的结果。这样, job_time 将很容易访问:

for i in result_list:
    job_time_from_model = result_list[i].job_time
Run Code Online (Sandbox Code Playgroud)

我会按如下方式执行此操作,但我不知道如何将%%function logic%%内部注释合并。

这甚至可能以这种方式还是需要另一种方法?

模型.py:

class ValidatedManager(models.Manager):      
    **%%function-logic%%**
    def date(self, user, id):
            xlinkdatabase_validated_object = self.get(id=id)
            job_id_list = xlinkdatabase_validated_object.\
                    job_id_list.all().order_by('-job_time')
            date_added = None
            for item …
Run Code Online (Sandbox Code Playgroud)

python django pagination annotate sql-order-by

5
推荐指数
0
解决办法
537
查看次数

postgresql,奇怪的OFFSET/LIMIT行为(记录顺序)

所以基本上我有这个范围(sql):

scope.to_sql
=> "SELECT  \"offers\".* FROM \"offers\" INNER JOIN \"cities_offers\" ON \"offers\".\"id\" = \"cities_offers\".\"offer_id\" WHERE \"cities_offers\".\"city_id\" = 2 AND \"offers\".\"category_id\" IN (2) AND (offers.category_id is NOT NULL) ORDER BY offers.discount desc LIMIT 25 OFFSET 0"
Run Code Online (Sandbox Code Playgroud)

不知何故,上述查询的记录顺序不同,而且没有LIMIT和OFFSET的记录顺序不同:

   scope[6]
=> #<Offer id: 8629 ...

scope.except(:offset, :limit)[6]
=> #<Offer id: 8729 ...
Run Code Online (Sandbox Code Playgroud)

8629和8729记录具有相同的discount值(我按顺序排列的属性).

如果可以在这些情况下保持相同的记录订购,请您提供建议吗?

sql postgresql activerecord ruby-on-rails sql-order-by

1
推荐指数
1
解决办法
873
查看次数