Я работаю над онлайн-магазином в Django (сейчас это только базовая корзина покупок), и я планирую добавить функциональность для пользователей, чтобы отмечать элементы как любимые (так же, как и в stackoverflow). Модели для корзины выглядят примерно так:Предоставление анонимным пользователям той же функции, что и зарегистрированной
class Cart(models.Model):
user = models.OneToOneField(User)
class CartItem(models.Model):
cart = models.ForeignKey(Cart)
product = models.ForeignKey(Product, verbose_name="produs")
Модель избранного будет всего лишь столом с двумя рядами: пользователем и продуктом.
Проблема в том, что это будет работать только для зарегистрированных пользователей, так как мне нужен пользовательский объект. Как я могу также позволить незарегистрированным пользователям использовать эти функции, сохраняя данные в файлах cookie/сеансах и когда и если они решают зарегистрироваться, перемещая данные к своему пользователю?
Я думаю, что один из вариантов был бы своего рода родовыми отношениями, но я думаю, что это немного сложно. Возможно, с дополнительной строкой после пользователь это объект сеанса (я до сих пор не использовал сеансы в django), и если для пользователя установлено значение None, используйте это?
Так что, в основном, я хочу спросить, есть ли у вас эта проблема раньше, как вы ее решили, какой был бы лучший подход?
+1: анонимные пользователи по-прежнему имеют IP-адреса, которые могут быть использованы для создания необходимого временного пользователя без пароля. Когда они регистрируются, вы фактически обновляете их, чтобы иметь правильное имя и пароль. –
Хорошая идея, я об этом не думал. благодаря! –
IP-адрес не может использоваться как уникальный ключ. Подумайте о нескольких пользователях за NAT. – tzot