2010-02-26 6 views
0

J'ai ajouté quelques modèles dans mon fichier models.py et je veux ajouter une classe d'administration pour utiliser un éditeur wysiwyg dans les champs de texte. Eh bien, je sais que Django lui-même ne supporte pas les migrations et j'ai utilisé South, mais ça ne marche pas non plus.
South ne "voit" pas le changement.
Est-il possible que South détecte les changements de champs, mais pas si j'ajoute une nouvelle classe?
Comment paramétrer Django pour détecter de tels changements?Comment ajouter une classe Admin à un modèle après syncdb?

Répondre

1

Vous semblez être très confus, malheureusement. Bien sûr, Django lit le code dans models.py - sinon quel serait le but de celui-ci? Django utilise ce code initialement pour définir le SQL modèle lorsque vous faites syncdb, mais il ne modifie pas la base de données existante tables dans les appels suivants à syncdb - d'où la nécessité du Sud.

Mais naturellement, Django utilise models.py et admin.py et tous les autres code Python pour définir sa propre configuration et de l'état. (Et notez que les classes d'administration ne sont pas définies dans models.py mais admin.py.)

Si vous ne voyez pas les changements, vous devrez redémarrer votre serveur.

+0

Merci, ça m'aide beaucoup. Je ne pourrais pas le tester réellement, mais je le ferai une fois que j'en aurai l'occasion. – x0rg

2

syncdb et Sud ne concernent que les descendants de Model dans les applications répertoriées dans INSTALLED_APPS. Tout le reste est géré directement par Django.

+0

Mais si j'ajoute un administrateur de classe ou une méta-classe au modèle, comment Django le voir? Je pensais que Django lisait juste la base de données et non models.py – x0rg

+0

Pourquoi ne * pas * lire * models.py? Ce module contient du code Python, et Django est écrit en Python. –

1

Je suis assez sûr que si vous suivez les étapes décrites dans le tutoriel pour créer une application admin ça va marcher. La migration n'est pas un problème car l'application d'administration crée de nouvelles tables plutôt que d'en modifier une existante.

Questions connexes