Таблица Django не существует после миграции - PullRequest
1 голос
/ 01 июня 2019

Я разрабатываю тестовое приложение в Google App Engine с Django + Python 3.7;Я успешно запустил тестовое приложение и создал новое приложение как на локальной стороне, так и на сервере ядра приложения.Сейчас я пытаюсь создать немного более сложную модель.Я создал файл модели + view + url и шаблон и перенес его (с очевидным успехом), но если я пытаюсь визуализировать шаблон на локальном сервере, я получаю эту ошибку:

ProgrammingError at / (1146, "Таблица 'djangoseo.keywords_keywords' не существует")

Я пытался перенести модель в другой раз, безуспешно использовал команду syncdb.

Это модель

from django.db import models


class Keywords(models.Model):
    keyword_name = models.CharField(max_length=200)
    keyword_tags = models.ManyToManyField('Tags')
    keyword_urls = models.ManyToManyField('Urls', through='Rankings')
    avg_volume = models.IntegerField(default=0)
    jan_volume = models.IntegerField(default=0)
    feb_volume = models.IntegerField(default=0)
    mar_volume = models.IntegerField(default=0)
    apr_volume = models.IntegerField(default=0)
    may_volume = models.IntegerField(default=0)
    jun_volume = models.IntegerField(default=0)
    jul_volume = models.IntegerField(default=0)
    aug_volume = models.IntegerField(default=0)
    sep_volume = models.IntegerField(default=0)
    oct_volume = models.IntegerField(default=0)
    nov_volume = models.IntegerField(default=0)
    dec_volume = models.IntegerField(default=0)
    intent = models.CharField(max_length=200)
    micromoment = models.CharField(max_length=200)
    language = models.CharField(max_length=200)
    addedby = models.CharField(max_length=200)

    def __str__(self):
        return self.keyword_name

class Tags(models.Model):
    tag_name = models.CharField(max_length=200)
    addedby = models.CharField(max_length=200)

    def __str__(self):
        return self.tag_name

class Urls(models.Model):
    url_name = models.CharField(max_length=300)
    domain = models.CharField(max_length=200)

    def __str__(self):
        return self.url_name

class Rankings(models.Model):
    keyword = models.ForeignKey(Keywords, on_delete=models.CASCADE)
    url = models.ForeignKey(Urls, on_delete=models.CASCADE)
    date_ranking = models.DateTimeField()
    ranking = models.IntegerField(default=0)

    def __str__(self):
        return self.ranking'''

Это представление

from django.views import generic

from .models import Keywords


class IndexView(generic.ListView):
    template_name = 'keywords/index.html'
    context_object_name = 'keywords_list'

    def get_queryset(self):
        """Return the first ten keywords."""
        return Keywords.objects.order_by('keyword_name')[:10]

И это шаблон для index.html

{% if keywords_list %}
<ul>
{% for keyword in keywords_list %}
    <li>{{ keyword.keyword_name }}</li>
{% endfor %}
</ul>
{% else %}
<p>No keywords are available.</p>
{% endif %}

Я получаю эту ошибку:

ProgrammingError at / (1146, "Table 'djangoseo.keywords_keywords' doesn't exist") Request Method: GET Request URL: <a href="http://localhost:8000/" rel="nofollow noreferrer">http://localhost:8000/</a>

Как это исправить?Почему я это понимаю?

1 Ответ

0 голосов
/ 02 июня 2019

Если вы еще не сделали начальную миграцию , это может быть проблемой.Сначала убедитесь, что это сделано, следуя ссылкам на исходную документацию по миграции.

Если вы выполнили начальную миграцию, вам необходимо проверить, чтобы при запуске

python manage.py makemigrations

вы получили файл миграции в модуле yourmodule/migrations/ справочник.Если этот файл не существует, необходимо дважды проверить синтаксис для makemigrations и убедиться, что вы запускаете команду из того же каталога, в котором находится ваш файл manage.py.

Если у вас есть миграцияфайл, вам нужно запустить migrate :

python manage.py migrate

, чтобы применить его к базе данных.Чтобы убедиться, что он применяется, проверьте в вашей базе данных таблицу с именем djangomigrations и запустите select * from djangomigrations order by id desc;.Если вы видите свое имя файла в таблице, вам следует идти.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...