如何通过django过滤器获取相关模型的字段

时间:2012-09-04 16:18:21

标签: django django-models django-views

所以这是场景。我得到user_id并执行一个名为generated的过滤器。我想按检查顺序显示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顺序的值。知道怎么克服这个吗?

1 个答案:

答案 0 :(得分: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']