Usare un valore booleano nel template

5 views
Skip to first unread message

AM Romagnoli

unread,
Sep 6, 2018, 12:43:29 PM9/6/18
to Django-it
Ciao a tutti.

Sto lavorando a un progetto in cui ho creato due pagine, in una c'è una lista completa di prodotti (ListView) e in un'altra il dettaglio del singolo articolo.
Vorrei modificare il template, tramite una variabile booleana, nel caso in cui il prodotto in questione sia stato acquistato dall'utente.

sono riuscito a creare questa view:

def detailModel(request, pk):
    model = get_object_or_404(Model, pk=pk)
   
    if request.user in model.users.all():
       follower = True
    else:
       follower = False
    context = {"model": model, "follower": follower}
    return render(request, "core/detail_view.html", context)

così funziona, ma mi chiedevo:

1) Se esiste un sistema più performante
2) Come applicare tutto questo al ListView
3) Se è possibile scrivere una funzione valida per tutti i casi senza dovermi ripetere per ogni vista che andrò a creare (ho pensato a un template filter)

Ringrazio in anticipo

Karim

unread,
Sep 9, 2018, 6:54:23 AM9/9/18
to Django Italia
Io fare un metodo nel prodotto che passato l'utente mi dice se e' stato acquistato o meno da quell'utente.

def product.has_been_acquired_by_user(user):
Uno metodo del genere ti ritorna True se il prodotto e' stato acquistato almeno una volta dall'utente.

Forse pero' il prodotto non dovrebbe essere in grado di sapere una cosa del genere, ma se nel tuo modello hai un oggetto 'Acquisto' che lega utente con prodotto, allora ti basta fare Acquisto.objects.filter(user=user, product=product) per sapere se e' stato acquistato. Nel caso della list view, prendi tutti gli acquisti di user e controlli che il prodotto della lista sia nel queryset.

Che ne pensi?


--
Karim N. Gorjux

Romagnoli Emanuele

unread,
Sep 9, 2018, 9:52:31 AM9/9/18
to djan...@googlegroups.com
Ciao Karim, intanto grazie per la risposta.

Il problema è che sto gestendo tutto con una ForeignKey, quindi non posso usare il queryset.
Il metodo sul Prodotto è interessante, ma il problema è che non so come passarlo al template, perché avendo una lista non so come va gestita l'informazione.
E' questo il passaggio che mi sfugge

--
Hai ricevuto questo messaggio perché sei iscritto al gruppo "Django-it" di Google Gruppi.
Per annullare l'iscrizione a questo gruppo e non ricevere più le sue email, invia un'email a django-it+unsubscribe@googlegroups.com.
Per postare in questo gruppo, invia un'email a djan...@googlegroups.com.
Visita questo gruppo all'indirizzo https://groups.google.com/group/django-it.
Per altre opzioni visita https://groups.google.com/d/optout.



--
Emanuele Romagnoli

Karim

unread,
Sep 9, 2018, 7:06:53 PM9/9/18
to Django Italia
On Sun, Sep 9, 2018 at 11:52 PM Romagnoli Emanuele <e.am.ro...@gmail.com> wrote:
Ciao Karim, intanto grazie per la risposta.

Il problema è che sto gestendo tutto con una ForeignKey, quindi non posso usare il queryset.

Perche'? Mi faresti vedere un po' di codice? (metti su pastebin)

 
Il metodo sul Prodotto è interessante, ma il problema è che non so come passarlo al template, perché avendo una lista non so come va gestita l'informazione.

Secondo me puoi passare una queryset senza problemi. Ma anche con un lista, puoi aggiungere proprieta' agli oggetti.
 
E' questo il passaggio che mi sfugge

Se puoi condividi un po' di codice, al massimo ci organizziamo per uno screensharing.

Ciao

 
--
Karim N. Gorjux
Reply all
Reply to author
Forward
0 new messages