sql >> データベース >  >> RDS >> Mysql

Djangomanytomanyクエリの奇妙な動作

    Subscription以降 Post間のm2m関係のスルーテーブルです。 およびSubscriberSubscriptionのフィールドで注文した場合 モデル自体では、すべての投稿が結果セットに個別の行として表示されるため、s_count=1が取得されます。 特定のサブスクライバーを持つ各投稿は一意であるためです。

    Postに注釈を付ける必要があります 最新のdate_subscribedを持つオブジェクト すべてのsubscribersの 次に、注釈付きフィールドで注文します:

    posts = Post.objects.annotate(
                s_count=Count('subscribers'),
                s_date_max=Max('subscription__date_subscribed')
            ).order_by('-s_count', '-s_date_max')
    

    次の質問の更新:

    count()を使用する場合 メソッドは、Postsの数を返します 。 len(queryset.values_list('s_count', 'subscription__date_subscribed'))から取得したカウントとは異なることがわかります。 この時点で、日付の個々の値が結果セットにフェッチされているためです。




    1. 改行を保持したままMySQLにテキストデータを保存および取得するにはどうすればよいですか?

    2. このコードはSQLインジェクションを防ぎますか?

    3. MySQL日付フィールドとして日付テキストを含む文字列列を使用する

    4. Oracleで重複行を削除する2つの方法