2016-02-01 16 views
18

Nie mogę wyświetlić miniatury wyświetlanej w moim szablonie. Otrzymuję ten błąd:Tabela thumbnail_kvstore nie istnieje

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

  • Zainstalowane sorl_thumbnail-12,3
  • Używam MariaDB 10.1.11
  • nie mam migracji, które nie są wykonywane
  • widzę obraz gdybym nie używać 'miniatury' tag

Oto co zrobiłem

  • W settings.py:

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

    import sorl 
    ... 
        image = sorl.thumbnail.ImageField(upload_to='thumbnails', null=True) 
    
  • W moim szablonu

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

Odpowiedz

36

Więc po niektórych badań, to wygląda wersja 12.3 of sor l-thumbnail na PyPI i Github są różne!

Jeśli pobierzesz źródło bezpośrednio z PyPI - okaże się, że pakiet nie zawiera żadnych migracji. Jest to powód, dla którego tabela nie istnieje, mimo że wykonano wszystkie migracje.

Na Github, the migration file dla wersji 12.3 zdecydowanie istnieje.

Masz trzy opcje:

  1. utworzyć tabelę przy użyciu ./manage.py syncdb (tylko jeśli używasz Django 1.8 lub niżej)
  2. zainstalować bezpośrednio z Github dla wersji 12.3
  3. użyć wersji 12.4a1 z sorl -thumbnail który obejmuje migracje

Możesz zainstalować z Github bezpośrednio w następujący sposób:

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

Wersja mini-miniaturki 12.3 obsługuje do wersji Django 1.8, gdzie polecenie syncdb nadal istnieje. Jeśli używasz Django 1.8 lub niższy, można stworzyć brakującą tabeli uruchamiając

python manage.py syncdb 
+1

ok thanks to działa. Podczas korzystania z Django 1.9.1 uruchomiłem ./manage.py migrację po zainstalowaniu wersji 12.3 z git. – Marc

+3

Proszę zobaczyć odpowiedź od AlmasK89 poniżej dla uruchamiania makemigrations w Django 1.9 lub wyższym: http://stackoverflow.com/a/35883910/568270 –

46

jeśli tylko

manage.py makemigrations 

nie tworzy żadnych migracje, spróbuj

manage.py makemigrations thumbnail 
manage.py migrate 

ten utworzy migracje dla miniatury, a następnie zmigruje je. To działa dla mnie. Używam Django 1.9 i sorl.thumb 12.3.

+1

Nie mogę znaleźć tego w dokumentacji - ale działa – jonprasetyo

+0

Możesz przeczytać więcej tutaj https://docs.djangoproject.com/ja/1.9/topics/migrations/#adding-migrations-to-apps i tutaj https://docs.djangoproject.com/ja/1.9/ref/django-admin/#django-admin -makemigrations Wkrótce używamy etykiety aplikacji, aby pokazać django z tego, jakie migracje aplikacji muszą być generowane. – AlmasK89

0

Dla mnie błąd wystąpił podczas wykonywania dumpdata.

Więc jeśli znajdziesz ten wątek tutaj, ponieważ próbował użyć dumpdata, a następnie wyłączając aplikację miniatury prawdopodobnie będzie to łatwe obejście dla Ciebie:

python manage.py dumpdata --exclude thumbnail 

Oczywiście należy wykonać inne odpowiedzi, jeśli chcesz mieć czyste Django.

1

Użyj wersji 12.3 miniatury. Śledź ten kroki

Usuń aktualną wersję

pip uninstall sorl-thumbnail 

zainstalować wersję 12,3

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

migracje

python manage.py migrate 
Powiązane problemy