PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Django:NotImplementedError:annotate() + different(fields) tidak diimplementasikan

Coba ini:

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

Jika question tidak memiliki answers , lalu question.is_user_agreed adalah None . Jika question memiliki setidaknya satu answers dengan answer.is_agreed=True , lalu question.is_agreed adalah True . Jika tidak, is_user_agreed adalah False .

Atau ini:

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 adalah daftar id dari question , yang memiliki setidaknya satu answers dengan answer.is_agreed=True .




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pendaftaran early bird dibuka untuk PGDay.IT 2011

  2. Permintaan lambat dengan gabungan luar kiri dan kondisi nol

  3. Heroku pg:push psql:FATAL:otentikasi kata sandi gagal untuk pengguna

  4. Komentari karakter/karakter di postgres/postgresql/psql?

  5. Batasan NOT NULL pada sekumpulan kolom