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

Django:NotImplementedError:annotate()+distinct(fields)は実装されていません

    これを試してください:

    Question.objects.annotate(
        answer_amount=Count('answers'),
        is_user_agreed=F('answers__is_agreed'),
    ).order_by('id', '-answers__is_agreed').distinct('id')
    

    questionの場合 answersはありません 、次にquestion.is_user_agreed Noneです 。 questionの場合 少なくとも1つのanswerがあります answer.is_agreed=Trueを使用 、次にquestion.is_agreed Trueです 。それ以外の場合、is_user_agreed Falseです 。

    またはこれ:

    agreed_questons = Answer.objects.filter(
        is_agreed=True,
    ).values_list('question_id', flat=True).distinct()
    
    Question.objects.annotate(
        answer_amount=Count('answers'),
        is_agreed=Case(
            When(id__in=agreed_questions, then=True),
            When(answers__isnull=True, then=None),
            default=False,
            output_field=NullBooleanField(),
        ),
    )
    

    agreed_questons idのリストです questionの 、少なくとも1つのanswerがある answer.is_agreed=Trueを使用 。




    1. アダプティブサーバーが使用できないか、PHPからSQLServerへの接続中にエラーが発生しません

    2. PHPを使用してmysqlデータベースにコンマ区切りのデータを挿入するためのヘルプが必要

    3. mysql_escape_string()関数は非推奨ですmysql_real_escape_string()Codeigniterを使用してください

    4. MSSQLのトランザクション分離レベルに応じた読み取り/書き込みロックのヒント