Sto lavorando a un negozio online in Django (solo un carrello di base in questo momento) e sto pensando di aggiungere funzionalità agli utenti per contrassegnare gli elementi come preferiti (proprio come in stackoverflow). I modelli per il carrello hanno un aspetto simile al seguente:Concedere agli utenti anonimi la stessa funzionalità di quelli registrati
class Cart(models.Model):
user = models.OneToOneField(User)
class CartItem(models.Model):
cart = models.ForeignKey(Cart)
product = models.ForeignKey(Product, verbose_name="produs")
Il modello dei preferiti sarebbe solo una tabella con due righe: utente e prodotto.
Il problema è che questo funzionerebbe solo per gli utenti registrati, poiché ho bisogno di un oggetto utente. Come posso consentire anche agli utenti non registrati di utilizzare queste funzionalità, salvare i dati in cookie/sessioni e quando e se decidono di registrarsi, spostando i dati sul loro utente?
Immagino che un'opzione potrebbe essere una sorta di relazioni generiche, ma penso che sia un po 'complicato. Forse avere una riga in più dopo l'utente che è un oggetto di sessione (non ho mai utilizzato le sessioni in django fino ad ora) e se l'Utente è impostato su Nessuno, usa quello?
Quindi, in sostanza, quello che voglio chiedere è se hai già avuto questo problema, come lo hai risolto, quale sarebbe l'approccio migliore?
+1: gli utenti anonimi hanno ancora indirizzi IP che possono essere utilizzati per creare un ID utente temp necessario senza password. Quando si registrano, in realtà li stai aggiornando per avere un nome e una password corretti. –
Bella idea, non ci ho pensato. Grazie! –
L'indirizzo IP non può essere utilizzato come chiave univoca. Pensa a più utenti dietro NAT firewall. – tzot