Comment charger un appareil SQL dans le modèle Django for User?
Personne ne sait comment charger des données initiales pour l'auth.L'utilisateur à l'aide de sql montages?
Pour mes modèles, je viens d'avoir un < modelname >.sql fichier dans un dossier nommé sql qui syncdb t-il son travail à merveille. Mais je n'ai aucune idée de comment le faire pour l'auth.Modèle utilisateur. J'ai cherché sur google, mais sans succès.
Merci d'avance,
Aldo
source d'informationauteur aldux
Vous devez vous connecter pour publier un commentaire.
Pour SQL luminaires, vous auriez à en particulier les états d'insertion pour les
auth
tables. Vous pouvez trouver le schéma de la auth tables avec la commandepython manage.py sql auth
.La plus facile et la base de données de manière indépendante (sauf si vous avez quelques SQL supplémentaires de magie que vous souhaitez exécuter), est de faire juste un JSON ou YAML luminaire fichier dans le répertoire fixtures de votre application avec des données comme ceci:
Vous pouvez générer un hachage de mot de passe rapidement dans un django shell
Ce seront chargées à chaque fois que vous exécutez
syncdb
.Vous êtes à la recherche pour
loaddata
:Mais je pense que la commande ne peut traiter que les fichiers en XML, YAML, en Python ou en format JSON (voir ici). Pour créer de tels fichiers appropriés, avoir un regard sur le
dumpdata
méthode.Merci pour vos réponses. J'ai trouvé la solution qui fonctionne pour moi, et pour la coïncidence était l'une de Brian de suggestion. Ici, il est:
Sapins j'ai déconnecté le signal qui a créé le Super-Utilisateur après syncdb, car j'ai mon super utilisateur dans mon auth_user appareil:
models.py:
Puis j'ai créé un signal à être appelée après syncdb:
< myproject >/< myapp >/management/__init__.py
Et dans mon settings.py j'ai ajouté FIXTURES_FILE avec le chemin d'accès à mon .fichier sql avec sql dump.
Une chose que je n'ai pas encore trouvé est de savoir comment le feu ce signal qu'après les tables sont créées, et pas à chaque fois syncdb est déclenché. Une solution temporaire pour ce qui est de l'utilisation de INSERT IGNORE INTO dans ma commande sql.
Je sais que cette solution est loin d'être parfait, et les critiques/améliorations/avis sont les bienvenus!
Ce qui concerne,
Aldo
Il y a un truc pour ça: (testé sur Django 1.3.1)
Solution:
python manage.py startapp auth_fix
mkdir auth_fix/fixtures
python manage.py dumpdata auth > auth_fixtures/fixtures/initial_data.json
Include auth_fix in INSTALLED_APPS inside settings.py
Prochaine fois que vous exécutez
python manage.py syncdb
Django va charger la auth luminaire automatiquement.Explication:
python manage.py dumpdata auth
d'un dumping de la "auth" données dans la base de données avec tous les Groupes et Utilisateurs de l'information. Le reste de la commande simplement redirige la sortie vers un fichier appelé "initial_data.json", qui est celui que Django recherche lorsque vous exécutez "syncdb".Cet exemple montre comment le faire en JSON, mais vous pouvez utiliser le format de votre choix.
Une option est d'importer votre auth.L'utilisateur SQL manuellement et par la suite de vidage à une norme de Django luminaire (nom, il initial_data si vous voulez syncdb pour le trouver). Généralement, vous pouvez mettre ce fichier dans n'importe quelle application de luminaires dir depuis le bridées données assortie avec le bon app_label. Ou vous pouvez créer un vide/mannequin d'application et de le placer là.
Une autre option est de remplacer la commande syncdb et d'appliquer l'appareil dans une manière que vous voyez l'ajustement.
Je suis d'accord avec Felix qu'il n'y a pas de non-trivial naturel crochet dans Django pour le remplissage de contrib apps avec SQL.
Si vous arrive d'être faire des migrations de base de données avec le sud, la création d'utilisateurs est très simple.
Tout d'abord, créer un nu-migration des données. Il doit être inclus dans certains de l'application. Si vous avez une application les plus courantes lorsque vous placez le code partagé, que serait un bon choix. Si vous avez une application où vous vous concentrez liées à l'utilisateur, le code, ce serait encore mieux.
Pertinentes de la migration de code pourrait ressembler à quelque chose comme ceci:
Puis exécutez simplement la migration et de l'authentification des utilisateurs doit être inséré.
J'ai simplement ajouté des instructions SQL dans la coutume fichier sql pour un autre modèle. J'ai choisi mon Employé modèle, car il dépend de auth_user.
La coutume SQL que j'ai écrit en fait lit à partir de mon héritage, demande et tire les infos de l'utilisateur à partir d'elle, et l'utilise REMPLACER plutôt que d'INSÉRER (je suis en utilisant MySQL) afin que je puisse l'exécuter à chaque fois que je veux.
Et je l'ai mis REMPLACER...instruction SELECT dans une procédure, de sorte qu'il est facile d'exécuter manuellement ou de façon planifiée avec cron.