Mam modelu django, która przechowuje dane użytkownika i produktów z wejściem forma:Django przechowywania anonimowych danych użytkownika
def ProductSelection(request, template_name='product_selection.html'):
...
if user.is_authenticated():
user = request.user
else:
# deal with anonymous user info
project = Project.objects.create(
user=user,
product=form.cleaned_data["product"],
quantity=form.cleaned_data["product_quantity"],
)
Oczywiście jest to dobre dla uwierzytelnionych użytkowników, ale także chcą być w stanie przechowywać anonimowy projekty użytkowników i jeśli to możliwe, powiąż je z użytkownikiem, gdy w końcu się zarejestruje i uwierzytelni.
Mój pomysł polega na utworzeniu anonimowego użytkownika o nazwie = some_variable (znacznik czasu połączony z losowym hash?), A następnie zapisz tę nazwę użytkownika w danych sesji. Jeśli upewnię się, że ta zmienna sesji, jeśli istnieje, jest używana do rejestrowania wszystkich działań projektu tego użytkownika, powinienem być w stanie zaktualizować projekty za pomocą rzeczywistych poświadczeń użytkownika podczas rejestracji.
Czy to zbyt skomplikowane i kruche? Czy mogę niepotrzebnie oszczędzać tysiące wierszy danych? Jakie byłoby optymalne podejście do tego wspólnego problemu?
Wszelkie wskazówki na ten temat będą mile widziane.
Kiedy już napotkałem podobne problemy w przeszłości, problem pojawia się, gdy trzeba wrócić w innym kierunku. Tak jakby użytkownicy mogli mieć wiele projektów i musieli zrobić coś takiego, aby zobaczyć, które sesje lubią dwa konkretne projekty. – JeffS
W moim przypadku chcę zarówno przechowywać anonimowe dane użytkownika w bazie danych, jak i kojarzyć je z konkretnym użytkownikiem podczas sesji. Jeśli 'user = request.user' zwróci anonimowy obiekt użytkownika, nie mogę później powiązać tych informacji z użytkownikiem podczas rejestracji. –
W takim przypadku, mój pierwszy przykład powinien to zrobić: dodać pole do przechowywania wartości 'session_key', a następnie można pobrać żądaną instancję projektu i powiązać ją z nowym użytkownikiem, gdy anonimowy użytkownik przestanie być anonimowy :-) –