Ich habe ein django Modell, die Benutzerdaten und Produkt aus einem Formular Eingabe speichert:Django Speicherung anonyme Benutzer Daten
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"],
)
Natürlich ist die für authentifizierte Benutzer in Ordnung, aber ich mag auch in der Lage sein, anonym zu speichern Benutzerprojekte, und wenn möglich, verknüpfen Sie sie mit dem Benutzer, wenn sie sich schließlich registrieren und authentifizieren.
Meine Idee ist es, anonyme Benutzer mit Name = Some_Variable (Zeitstempel verkettet mit einem zufälligen Hash?), Dann speichern Sie diesen Benutzernamen in Sitzungsdaten. Wenn ich sicherstelle, dass diese Sitzungsvariable, falls vorhanden, verwendet wird, um alle Projektaktivitäten dieses Benutzers aufzuzeichnen, sollte ich in der Lage sein, die Projekte mit den echten Anmeldeinformationen des Benutzers zu aktualisieren, wenn sie sich registrieren.
Ist das übermäßig kompliziert und brüchig? Würde ich riskieren, Tausende von Datenzeilen unnötig zu speichern? Was wäre der optimale Ansatz für dieses gemeinsame Problem?
Jede Anleitung zu diesem Thema wäre sehr willkommen.
Wenn ich in der Vergangenheit auf ähnliche Probleme stieß, kommt das Problem, wenn Sie zurück in die andere Richtung gehen müssen. Zum Beispiel, wenn Benutzer mehrere Projekte haben könnten, und Sie müssen etwas tun, um zu sehen, welche Sitzungen zwei bestimmte Projekte gefallen haben. – JeffS
In meinem Fall möchte ich die anonymen Benutzerdaten sowohl in der Datenbank speichern als auch über Sitzungen mit einem bestimmten Benutzer verknüpfen. Wenn 'user = request.user' ein anonymes Benutzerobjekt zurückgibt, kann ich diese Information später nicht mehr bei der Registrierung an den Benutzer binden. –
In diesem Fall sollte mein erstes Beispiel es tun: füge ein Feld hinzu, um den 'session_key' Wert zu behalten und du kannst später die gewünschte Projektinstanz abrufen und mit dem neuen Benutzer in Verbindung bringen, wenn der anonyme Benutzer anonym bleibt :-) –