Je suis en train de réinitialiser une base de données dans Django, en utilisant:des problèmes de base de données dans Django: ne peut pas remis à zéro en raison de dépendances
python manage.py reset app
mais l'erreur suivante:
Error: Error: app couldn't be reset. Possible reasons:
* The database isn't running or isn't configured correctly.
* At least one of the database tables doesn't exist.
* The SQL was invalid.
Hint: Look at the output of 'django-admin.py sqlreset app'. That's the SQL this command wasn't able to run.
The full error: cannot drop table app_record because other objects depend on it
HINT: Use DROP ... CASCADE to drop the dependent objects too.
C'est ce que mon fichier models.py ressemble:
class Record(models.Model):
name = models.CharField(max_length=50, db_index=True)
year = models.IntegerField(blank=True, null=True)
def __unicode__(self):
return self.name
class Class(models.Model):
record = models.ForeignKey(Record)
def __unicode__(self):
return self.id
Je reçois que je dois utiliser la commande DROP ... CASCADE dans le SQL qui supprime et rec répète la base de données (la sortie de django-admin.py). Mais comment puis-je éditer ce SQL directement depuis models.py?
MISE À JOUR
OK, je me suis dit comment supprimer des tables manuellement (la base de données Postgres), ont noté ici pour ceux qui ont le même problème:
python manage.py dbshell
# drop table app_record cascade;
# \q
python manage.py reset app
Would j'aime quand même savoir si quelqu'un a une meilleure façon de le faire, mais :)
Quelle commande tapez-vous pour l'obtenir? 'python manage.py réinitialiser l'application'? Ou essayez-vous de réinitialiser la table en particulier? –
Désolé - oui, "python manage.py réinitialiser l'application". – Richard
Une solution simple serait juste d'utiliser la commande DROP ... CASCADE manuellement, puis recréer la base de données ... quelqu'un peut-il me donner un exemple de la façon de faire cela? – Richard