PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Django ORM porównuje krotki / porządkowanie leksykograficzne

Poniżej znajduje się sposób, który działa w Django przed 3.2, używając annotate (co niestety wymaga również lekkiego hacka polegającego na ustawieniu output_field , nawet jeśli ta wartość nie jest używana).

from django.db.models import F, Func, TextField

col_a_col_b = Func(F('col_a'), F('col_b'), function='ROW', output_type=TextField())
col_a_col_b_from = Func(col_a_value, col_b_value, function='ROW')

filtered_queryset = queryset \
    .annotate(col_a_col_b=col_a_col_b) \
    .filter(col_a_col_b__gt=col_a_col_b_from) \
    .order_by('col_a', 'col_b')

W Django 3.2+ możesz najwyraźniej użyć alias zamiast annotate

Działa to, ponieważ to, co jest określane jako krotka, jest w rzeczywistości skrótem dla Konstruktor wierszy , czyli (col_a, col_b) to to samo co ROW(col_a, col_b)

Powyższe opiera się na informacjach zawartych w tym bilecie




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Nieskończona pętla w funkcji wyzwalania

  2. Nie można zaimportować pliku .csv do Cloud SQL z konsoli

  3. Dlaczego postgres nie używa indeksu w moim zapytaniu

  4. Błąd narzędzi Eclipse/Hibernacja:wpis ścieżki klasy archiwum nie istnieje

  5. Formularz wyszukiwania nie kieruje do właściwego kontrolera w Rails 5.1