2016-02-01 16 views
18

Non riesco a visualizzare la miniatura nel mio modello. Ottengo questo errore:Tabella thumbnail_kvstore inesistente

django.db.utils.ProgrammingError: (1146, "Table 'ia_website.thumbnail_kvstore' doesn't exist")

  • installati sorl_thumbnail-12.3
  • sto usando MariaDB 10.1.11
  • non ho di migrazione che non vengono eseguiti
  • posso vedere l'immagine, se io non utilizzare il tag 'miniature'

Ecco che cosa ho fatto

  • In settings.py:

    INSTALLED_APPS = [ 
        ... 
        'sorl.thumbnail', 
    ] 
    
    THUMBNAIL_DEBUG = TRUE 
    
  • In models.py

    import sorl 
    ... 
        image = sorl.thumbnail.ImageField(upload_to='thumbnails', null=True) 
    
  • Nel mio modello

    {% thumbnail content.image "237x110" as im %} 
        <img src="{{ im.url }}"> 
    {% endthumbnail %} 
    

risposta

36

Così, dopo alcune ricerche, sembra che la versione 12.3 di sor l-thumbnail su PyPI e Github sono diversi!

Se si scarica la sorgente direttamente da PyPI, il pacchetto non contiene alcuna migrazione. Questo è il motivo per cui la tabella non esiste anche se sono state eseguite tutte le migrazioni.

Su Github, the migration file per la versione 12.3 esiste sicuramente.

Sono disponibili tre opzioni:

  1. creare la tabella utilizzando ./manage.py syncdb (solo se si sta eseguendo Django 1.8 o al di sotto)
  2. installare direttamente dal Github per la versione 12.3
  3. Utilizzare la versione 12.4a1 di SORL -thumbnail che include le migrazioni

È possibile installare da Github direttamente come segue:

pip install git+git://github.com/mariocesar/[email protected] 

sorl-thumbnail versione 12.3 supporta fino a Django versione 1.8, in cui il comando syncdb esiste ancora. Se si sta eseguendo Django 1.8 o inferiore, è possibile creare la tabella mancante eseguendo

python manage.py syncdb 
+1

Ok grazie funziona. Mentre sto usando Django 1.9.1 ho eseguito ./manage.py migrare dopo aver installato la versione 12.3 da git. – Marc

+3

Vedere la risposta da AlmasK89 sotto per eseguire makemigrations in Django 1.9 o versioni successive: http://stackoverflow.com/a/35883910/568270 –

46

Se solo

manage.py makemigrations 

non crea alcun migrazioni, provare

manage.py makemigrations thumbnail 
manage.py migrate 

Questo creerà le migrazioni per le miniature e poi le migra. Funziona per me. Sto usando Django 1.9 e sorl.thumbnail 12.3.

+1

Non riesco a trovarlo nella documentazione - ma funziona – jonprasetyo

+0

Puoi leggere di più qui https://docs.djangoproject.com/ja/1.9/topics/migrations/#adding-migrations-to-apps e qui https://docs.djangoproject.com/ja/1.9/ref/django-admin/#django-admin -makemigrations In breve, usiamo l'etichetta dell'applicazione per mostrare django da quali migrazioni dell'applicazione devono essere generate. – AlmasK89

0

Per me l'errore si è verificato durante l'esecuzione di dumpdata.

Quindi, se trovate questa discussione qui perché si è tentato di utilizzare dumpdata, quindi escludendo l'applicazione delle miniature sarà probabilmente una soluzione semplice per voi:

python manage.py dumpdata --exclude thumbnail 

Ovviamente si deve seguire le altre risposte, se si vuoi avere il tuo Django pulito.

1

Utilizzare la versione 12.3 di sorl-thumbnail. Seguire questa procedura

Rimuovere attuale versione

pip uninstall sorl-thumbnail 

installare la versione 12,3

pip install git+git://github.com/mariocesar/[email protected] 

Migrazioni

python manage.py migrate 
Problemi correlati