Scusa ripropongo la richiesta
Ho 2 Tabelle Clienti e Abbonamenti
Clienti tra i vari campi ha anche un campo Foto (ImageField)
Abbonamenti ha un campo ClienteID collegato con una foreignKey alla Tabella Clienti
Ho la view AbbonamentiViews.py con varie classi, una di queste é class AbbonamentiListaView(ListView):
La funzione get_queryset di questa classe, provvede a filtrare e aggiungere il campo Foto
La prima parte del codice controlla se deve filtrare la Tabella Abbonamenti in base ad un dato inserito dall'utente se previsto
def get_queryset(self):
# Prende tutto il set di dati
queryset = super().get_queryset()
# Se il campo di Ricerca é usato ritorna i Movimenti filtrati, altrimenti ritorna tutti i Movimenti
query = self.request.GET.get('q', '')
if query: # Se c'è un input di ricerca, filtra i risultati
# print('query ', query, AllenamentiSchede.objects.filter(ClienteID__Anagrafica__icontains=query))
# return Abbonamenti.objects.filter(ClienteID__Anagrafica__icontains=query)
queryset = queryset.filter(ClienteID__Anagrafica__icontains=query)
La seconda parte del codice cicla la Tabella ed aggiunge il campo Foto
for abbona in queryset:
# Controlla se il movimento ha un cliente associato e se ha un'immagine
if abbona.ClienteID and abbona.ClienteID.Foto:
# Ottieni l'URL della foto del cliente per ogni movimento
fotoURL = abbona.ClienteID.Foto.url
# Stampa l'URL della foto del cliente per debug
print('URL della foto del cliente:', fotoURL)
# Aggiungi l'URL della foto del cliente all'oggetto movimento
abbona.fotoURL = fotoURL
return queryset
In questa maniera, attraverso il template posso visualizzare la foto.
La domanda é:
E' giusto operare in tale maniera o c'é qualche comando per effettuare una join evitando il ciclo?
Se non sono stato chiaro, dimmi quel'é la parte che devo chiarire