2011-10-15 7 views
0

Je voulais créer un e-mail authentifié modèle utilisateur django, et je essentiellement suivi les étapes de ce site: http://www.micahcarrick.com/django-email-authentication.html Et aussi inclus le code de modification de la table dans une fonction post_syncdb dans un module de managmenet, pour faire l'email un identifiant unique. Cela devrait fonctionner avec MySQL. MAIS, ça ne marchera pas pour sqlite. En effet, l'altération de table de sqlite est limitée et ne vous permettra pas de changer cet attribut, ni même d'ajouter une colonne avec un identifiant unique.Django et SQLite email authentification

S'il n'y a pas de façon élégante de faire cela, alors je devrais peut-être passer à MySql.

Répondre

0

http://www.sqlite.org/faq.html#q26

Ainsi, il est UNIQUE entièrement pris en charge, mais vous ne pouvez pas modifier une table en utilisant UNIQUE. Donc vider la table vers une nouvelle table qui a la contrainte UNIQUE puis modifier et renommer les tables. Ou juste le vider, modifier le vidage et le réimporter.

+0

Le tableau est généré automatiquement par le Django ORM qui utilise le classe de modèle. Je devrais aller manuellement et faire l'altération comme je crois, ou il est possible que je me trompe et que ce soit faisable dans la fonction post_syncdb? – ArmenB

0

Je pense que, dans votre crochet post_syncdb, vous pouvez ajouter:

cursor.execute(
    "CREATE UNIQUE INDEX IF NOT EXISTS auth_user_email_unique " 
    "ON auth_user (email COLLATE NOCASE);" 
) 

vous pourriez avoir à sortir différents blocs sur la base settings.DATABASES['default']['ENGINE']