0

これがシナリオです。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) 

クラス C のすべての値を取得する for ループを実行できます。

Cから値を取得するための私の見解

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

しかし、ここでの問題は、毎回 B から 1 つの ID を取得し、C へのフィルタリングを実行することです。これを克服する方法はありますか?

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 に答える