Estoy trabajando en una tienda en línea en Django (solo un carrito de compras básico en este momento), y planeo agregar funcionalidad para que los usuarios marquen los artículos como favoritos (al igual en stackoverflow). Los modelos para el carro se ven más o menos así:Dando a los usuarios anónimos la misma funcionalidad que los registrados
class Cart(models.Model):
user = models.OneToOneField(User)
class CartItem(models.Model):
cart = models.ForeignKey(Cart)
product = models.ForeignKey(Product, verbose_name="produs")
El modelo de favoritos sería solo una tabla con dos filas: usuario y producto.
El problema es que esto solo funcionaría para los usuarios registrados, ya que necesito un objeto de usuario. ¿Cómo puedo también permitir que los usuarios no registrados utilicen estas características, guardando los datos en cookies/sesiones, y cuándo y si deciden registrarse, moviendo los datos a su usuario?
Supongo que una opción sería algún tipo de relaciones genéricas, pero creo que es un poco complicado. Tal vez tener una fila extra después de usuario que es un objeto de sesión (realmente no he usado sesiones en django hasta ahora), y si el usuario está configurado como Ninguno, ¿usar eso?
Así que, básicamente, lo que quiero preguntar, es que si ha tenido este problema antes, ¿cómo lo resolvió, cuál sería el mejor enfoque?
+1: los usuarios anónimos aún tienen direcciones IP que se pueden usar para crear una ID de usuario temporal necesaria sin contraseña. Cuando se registran, en realidad los está actualizando para tener un nombre y contraseña adecuados. –
Buena idea, no pensé en eso. ¡Gracias! –
La dirección IP no puede usarse como una clave única. Piensa en múltiples usuarios detrás de NAT cortafuegos. – tzot