2014-02-24 6 views
2

장고에서 내가 이해하지 못하는 DB 관련 문제가 있습니다.작동 오류 - 해당 테이블이 없습니다. - Django, mptt

가 나는 MPTT 모델과 같이 정의

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']) 

그런 다음 내보기에, 나는 모델과 몇 문을 시도하고 내가 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}) 

내보기 또는 모델을 정의하는 방식에 문제가 있는지 확실하지 않습니다. 내 이해에 따르면 'try'표현식은 코드가 평가되지 않으면 예외로 건너 뛸 수 있도록해야한다. 왜 이것이 바로 예외가되지 않습니까? 예외 값 (no such table: images_app_image)을보고

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 

답변

5

, 나는 실제 데이터베이스 테이블이 존재하지 않는다고 생각합니다.

./manage dbshell 명령을 사용하여 데이터베이스에 테이블이 있는지 확인하십시오. 쉘에있는 데이터베이스의 모든 테이블을 .schema 명령으로 나열하거나 .schema images_app_image을 사용하여 실제 테이블의 스키마 정의 만 표시 할 수 있습니다.

테이블이없는 경우 ./manage syncdb으로 만들거나 남쪽을 사용하는 경우 migrate 명령을 사용하십시오.

+0

당신이 무슨 바보 같은 오류가 올바른지 시도 할 수 있습니다. 당신의 도움을 주셔서 감사합니다. –

2

시도 python manage.py syncdb.

당신이

알 수없는 명령을받을 경우 'syncdb'

을 당신은

python manage.py migrate --run-syncdb 
+0

이 명령은 오후를 정렬합니다. – Rickka