1

私はこれを試しています:

count = UserCheck.objects.filter(user=puser, fixture__competition__name__icontains='gold',
                                   fixture__date__gte='2013-02-11',
                                   fixture__date__lte='2013-05-24', year=2013).extra(
                                   where=["WEEKOFYEAR(fixture__date) = %s" %week]).exclude(result=0).count()

問題は、extra()を使用してフィルタリングできない部分WEEKOFYEAR(fixture__date)です。これどうやってするの。これは可能ですか?

PS: MySQL (および django 1.4) を使用しています。

4

1 に答える 1

3

追加の QuerySet 修飾子を使用すると、Django の ORM を使用しなくなります。__「純粋な」SQLを使用しているため、基本的に関連するモデルには表記法でアクセスできず、この場合fixture__dateは有効な列名ではありません。ただし、テーブルは Django では特定の方法で名前が付けられることに注意する必要があります。したがって、次を使用できます。

count = UserCheck.objects.filter(user=puser, fixture__competition__name__icontains='gold',
                                   fixture__date__gte='2013-02-11',
                                   fixture__date__lte='2013-05-24', year=2013).extra(
                                   where=["WEEKOFYEAR(app_fixture.date) = %s" %week]).exclude(result=0).count()

whereは、モデルappを保持するアプリを指します。Fixture

つまり、アプリ内のモデルごとに Django が tableを作成し、そのモデルを参照したいときにそれを句<app>_<model>と共に使用できます。extra

于 2013-03-14T09:41:23.543 に答える