erreur de fonctionnement - pas de table de ce type - Django, mptt
Je suis en cours d'exécution dans une DB problème lié à Django que je ne comprends pas.
Je définir un MPTT modèle comme suit:
class Image(MPTTModel):
name = models.CharField(max_length=50)
parent = TreeForeignKey('self', null=True, blank=True, related_name='children')
def __unicode__(self):
return self.name
def rank(self): leaves = self.get_leafnodes() if leaves: rank = leaves[0].get_level() - self.get_level() else: rank = 0 return rank
mptt.register(Image, order_insertion_by=['name'])
Puis dans mes vues, je tente un peu de déclarations avec le modèle, et j'obtiens un OperationalError.
def index(request):
if request.method == 'POST':
image_string = request.POST.get('get_image')
index = image_string.find('(')
if index == -1:
parent = image_string
child = None
else:
parent = image_string[0:index]
child = image_string[index+1:len(image_string)-1]
try:
images = Image.objects.all()
image_names = [a.name for a in images]
except Image.DoesNotExist:
return render(request, 'images_app/index.html', {'images':[]})
else:
parent_model = Image(name=parent)
parent_model.save()
child_model = Image(name=child, parent=parent_model)
child_model.save()
return render(request, 'images_app/index.html', {'images':images})
Je ne suis pas sûr si c'est un problème avec mon point de vue, ou de la façon dont je suis la définition du modèle. Selon ma compréhension, le 'essayer' expression doit faire en sorte que si le code n'est pas évalué, il sera tout simplement sauter à l'exception. Pourquoi ne pas aller directement à l'exception?
Traceback:
File "C:\Python27\lib\site-packages\django\core\handlers\base.py" in get_response
114. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\djangoprojects\images\images_app\views.py" in index
17. if images:
File "C:\Python27\lib\site-packages\django\db\models\query.py" in __nonzero__
100. self._fetch_all()
File "C:\Python27\lib\site-packages\django\db\models\query.py" in _fetch_all
854. self._result_cache = list(self.iterator())
File "C:\Python27\lib\site-packages\django\db\models\query.py" in iterator
220. for row in compiler.results_iter():
File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py" in results_iter
709. for rows in self.execute_sql(MULTI):
File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py" in execute_sql
782. cursor.execute(sql, params)
File "C:\Python27\lib\site-packages\django\db\backends\util.py" in execute
69. return super(CursorDebugWrapper, self).execute(sql, params)
File "C:\Python27\lib\site-packages\django\db\backends\util.py" in execute
53. return self.cursor.execute(sql, params)
File "C:\Python27\lib\site-packages\django\db\utils.py" in __exit__
99. six.reraise(dj_exc_type, dj_exc_value, traceback)
File "C:\Python27\lib\site-packages\django\db\backends\util.py" in execute
53. return self.cursor.execute(sql, params)
File "C:\Python27\lib\site-packages\django\db\backends\sqlite3\base.py" in execute
450. return Database.Cursor.execute(self, query, params)
Exception Type: OperationalError at /images/
Exception Value: no such table: images_app_image
OriginalL'auteur David J. | 2014-02-24
Vous devez vous connecter pour publier un commentaire.
En regardant la valeur d'exception (
no such table: images_app_image
), je suppose que la table de base de données n'existe pas.Vérifier si la table existe dans votre base de données à l'aide de la
./manage dbshell
de commande. Vous pouvez dresser la liste de toutes les tables dans la base de données dans le shell avec la commande.schema
ou de l'utilisation.schema images_app_image
pour ne montrer que la définition du schéma de la table.Si la table n'existe pas, le créer avec
./manage syncdb
(ou utilisez lemigrate
commande si vous utilisez du Sud).OriginalL'auteur HAL
Essayer
python manage.py syncdb
.Si vous obtenez
Vous pouvez essayer
OriginalL'auteur guaka