0

所以这里是场景。我得到 user_id 并做一个名为生成的过滤器。我想按检查顺序显示 C 类的所有值。

这是我的models.py

class A(models.Model):
    tob = models.ForeignKey(B)

    def something(self, user):
        return A.objects.filter(to_b=user)

class B(models.Model):
    bid = models.AutoField(primary_key=True)
    name = models.CharField(max_length=50)


class C(models.Model):
    name = models.CharField(max_length=50)
    tobid = models.ForeignKey(B)
    check = models.datetimeField()

这是我的views.py:

def generated(request,user_id):

    f= A()
    p = f.something(user_id) 

我可以执行一个 for 循环来获取 C 类的所有值。

我从 C 中获取价值的观点

    for des in p:
        des_list = des.tob.bid
        des_list_final = C.objects.filter(tobid = des_list)

但是这里的问题是每次它从 B 中获取一个 id 并对 C 执行过滤。但这不会给我 C order by check 的值。知道如何克服这个问题吗?

4

1 回答 1

0

我想按检查顺序显示 C 类的所有值。

C.objects.filter(tobid__id__in=[des.tob.bid.pk for des in p]).order_by('-check')

如果要永久设置订单,请使用ordering

class C(models.Model):

   class Meta:
     ordering = ['-check']
于 2012-09-04T16:37:02.740 回答