sql >> Databáze >  >> RDS >> PostgreSQL

Jak zjistím délku pole Django ArrayField?

extra() funkce byla zastaralá podle dokumenty :

Zde je návod, jak můžete udělat totéž pomocí vlastní Anotace funkce:

from django.db import models

class ArrayLength(models.Func):
    function = 'CARDINALITY'

MyModel.objects.all().annotate(field_len=ArrayLength('field')).order_by('field_len')

Upozorňujeme, že kardinalita() Funkce je dostupná v PostgreSQL 9.4 nebo novějším. Pokud používáte starší verzi, musíte použít délka_pole() :

MyModel.objects.all().annotate(field_len=Func(F('field'), 1, function='array_length')).order_by('field_len')

Jednou výhradou u tohoto druhého dotazu je, že prázdné pole bude seřazeny před všemi neprázdnými. To by se dalo vyřešit sloučením NULL hodnoty z délka_pole na 0.



  1. Vytvořte prázdnou databázi pomocí nástroje Oracle Database Configuration Assistant

  2. Doktrína Symfony2 mysql IN dotaz

  3. co znamená neautentizovaný uživatel v MYSQL?

  4. Jak mohu uložit výstup dotazu do dočasné tabulky a použít tabulku v novém dotazu?