Come posso eseguire una query sul nome completo in Django?Interrogazione del nome completo in Django
Per chiarire, io essenzialmente voglio fare creare una colonna temporanea, che unisce first_name e last_name per dare un nome completo, poi fare un COME su quello, in questo modo:
select [fields] from Users where CONCAT(first_name, ' ', last_name) LIKE '%John Smith%";
La query sopra sarebbe tornato a tutti gli utenti chiamato John Smith. Se possibile, vorrei evitare di utilizzare una chiamata SQL raw.
Il modello di cui sto parlando è il modello utente stock django.contrib.auth.models. Apportare modifiche al modello direttamente non è un problema.
Ad esempio, se un utente deve cercare "John Paul Smith", deve corrispondere agli utenti con un nome di "John Paul" e il cognome "Smith", così come gli utenti con nome "John" e il cognome "Paul Smith".
Si prega di includere i vostri modelli Django. Se vuoi un "valore derivato" (come 'CONCAT (first_name, '', last_name)' in SQL) dovrai aggiungerlo al modello. Pertanto, includi il modello nella tua domanda. –
Sei consapevole, BTW, che 'CONCAT (first_name, '', last_name) LIKE '% John Smith%" 'è terribilmente inefficiente? Usando' first_name LIKE'% John 'AND last_name LIKE' Smith% ''può essere più efficiente Perché usi il CONCAT quando ci sono modi non CONCAT per farlo? –
È il modello utente standard django.contrib.auth.models. Stiamo già aggiungendo/modificando campi in questo modello, quindi le modifiche non sono un –