PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Django:NotImplementedError:annotate () + diff (các trường) không được triển khai

Hãy thử điều này:

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

If question không có answers , rồi đến question.is_user_agreedNone . If question có ít nhất một answer với answer.is_agreed=True , rồi đến question.is_agreedTrue . Nếu không, is_user_agreedFalse .

Hoặc cái này:

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 là danh sách id trong số question , có ít nhất một answer với 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. Django. PostgreSQL. regexp_split_to_table không hoạt động

  2. Làm thế nào để ngăn người dùng có thể xem các cơ sở dữ liệu khác và các bảng từ các cơ sở dữ liệu khác?

  3. Làm thế nào để thực thi psql tương tác trong bộ chứa docker của nó?

  4. postgresql với hàm quấn sql quá chậm?

  5. Nhiều INSERTS vào một bảng và nhiều INSERTS vào một bảng