.distinct([*fields])
funziona solo in PostgresSQL.
Da distinto documentazione
Ecco la differenza. Per una normale chiamata distinti(), il database confronta ogni campo in ogni riga quando determina quali righe sono distinte. Per una chiamata distinta() con nomi di campo specificati, il database confronterà solo i nomi di campo specificati.
Come affermato, tutti i campi di un record vengono controllati. Molto probabilmente nel tuo caso stai ricevendo record con valori di campo diversi (più probabilmente un caso se stai interrogando più tabelle ManyToMany o relazioni ForeignKey).
Per il consolidamento come array puoi fare riferimento alla tua domanda precedente I valori distinti di Django Query funzionano ma non riesco a utilizzare il risultato della query