Django ne pas créer de db tables pour les modèles (ni avec syncdb ni Sud)
J'ai un projet Django sur un VPS Centos.
J'ai créé quelques modèles et de débogage afin qu'ils valident et ne donnent pas d'erreurs.
Je les ai dans un "modèles" dans le dossier mon myapp et ont ajouté chaque modèle pour le fichier init dans ce répertoire, par exemple:
de la catégorie Catégorie importation
J'ai ajouté à l'application de settings.py INSTALLED_APPS
et a couru:
Python manage.py syncdb
Il semblait bien fonctionner et ajouté toutes les tables en dehors de ceux pour mon application.
J'ai ensuite installé au Sud et a ajouté que pour INSTALLED_APPS
et, essayé syncdb de nouveau et dit:
Python manage.py schemamigration myapp --initial
Il a généré le fichier correctement, mais rien n'était (aucun des tables de mes modèles).
Un fichier d'exemple dans "modèles" du dossier (usertype.py)
from django.db import models
class UserType(models.Model):
usertype_id = models.PositiveIntegerField(primary_key=True)
description = models.CharField(max_length=100)
is_admin = models.BooleanField()
is_moderator = models.BooleanField()
class Meta:
app_label = 'myapp'
Toutes les idées de ce qui pourrait mal se passer ici, et pourquoi je ne peux pas obtenir quoi que ce soit pour détecter mes modèles?
Je l'ai ajouté à l'original post aujourd'hui, plus d'infos nécessaires?
Voir mon autre commentaire s'il vous plaît
Veuillez voir mon montage pour la mise à jour de la solution.
OriginalL'auteur user3227889 | 2014-01-23
Vous devez vous connecter pour publier un commentaire.
Exécutez les commandes suivantes
Note il fonctionne sur django 1.7 version pour moi.
OriginalL'auteur Rafiq
vous êtes à la mauvaise compréhension du processus de travail avec les pays du sud. Le sud n'est pas juste une autre application, il est un outil de gestion. Votre application doit être un Sud-application à partir de la date de début ou de les convertir en un. Cela étant dit, le processus est comme suit:
exécuter le sud de l'initialisation de la commande:
migrer:
Si vous voulez convertir un projet:
exécuter:
manage.py convert_to_south myapp
Et le sud à partir de maintenant pour gérer les migrations.
*p.s. - vous pouvez ajouter les deux au sud et de votre propre application en même temps, si vous gardez à l'esprit de mettre le sud avant de vos propres applications. C'est parce que django lit INSTALLED_APPS dans l'ordre - il s'exécute syncdb sur toutes les applications, mais après l'installation de sud, il ne s'installe pas le reste et, au lieu de vous dire d'utiliser le sud commandes pour gérer ces
modifier
Je vous avoir induit en erreur. Depuis que vous avez mis autant l'accent sur le sud-chose que je n'ai pas réalisé que le problème était que vous étiez en train d'utiliser les modèles comme un répertoire de module à la place d'un fichier normal. C'est un problème reconnu dans django, et la solution est en fait exactement comme vous le bien dans la première place:
dire que c'est de votre structure:
vous avez besoin
bar.py
à ressembler à ceci:et
__init__.py
doit ressembler à ceci:Assurez-vous qu'il ressemble à ceci et cela fonctionnera.
Mise à JOUR 18/08/2014
Le billet a changé de wontfix, apparemment parce que le plus gros problème avec le app_label a été corrigé. Huzza!
1. Comme vous l'avez décrit dans votre post n'est pas la façon dont je l'ai décrit, il 2. Pouvez-vous partager models.py? Aussi toute autre information que vous jugez pertinente. Je ne pense pas voir le problème dans son ensemble encore
J'ai maintenant supprimé les références de
__init__.py
dans "modèles" du dossier que par le biais de votre recommandation. Merci pour cela, mais il n'a pas changé mon problème comme l'a déclaré avec aucun modèle n'a été détecté.Je ne m'attendais pas à changer quoi que ce soit, que je viens de mentionner.
Cool, j'ai ajouté un exemple de l'un des modèles pour la description de la question ci-dessus.
OriginalL'auteur yuvi