11

Вопрос по python, database – Django - DatabaseError: нет такой таблицы

Я определил две модели: class Server(models.Model): owners = models.ManyToManyField('Person') class Person(models.Model): name = models.CharField(max_length=50) admin.site.register(Server) admin.site.register(Person)После этого я даже проверил ...

@ cha0site Да, я знаю и уже попробовал. Это происходит только с 8-часовой задержкой, прежде чем люди с репутацией ниже 100 смогут ответить на свои вопросы. Я только отредактировал, чтобы избавить других, которые рассматривают этот вопрос, от попыток ответить на него, пока я не смогу опубликовать ответ. Осталось шесть часов.

от varesa

@James я не использовал<code>through</code>и я тоже подумал о том же самом, когда увидел sql. Кажется, подбирает название объекта

от varesa

@varesa: правильный способ ответить на свой вопрос в SO - опубликовать его как ответ и принять его, а не редактировать исходный вопрос. Добро пожаловать в переполнение стека!

от cha0site

<code>python manage.py migrate</code> решить вопрос для меня

от Arefe

Либо у вас отсутствует информация в приведенном выше, либо ваш пример неверен. Промежуточной таблицей по умолчанию должно быть «Servers_server_person». если вы не определили промежуточную таблицу, используя "от" до "

от James R

5 ответов

0

  1. use "manage.py help" to check the command
  2. if you find migrate and makemigration, it means your python has updated

шаг 1:

python manage.py ,makemigration

результат 1:

Migrations for 'mainsite':
mainsite\migrations\0001_initial.py
- Create model Post

шаг 2:

python manage.py migrate

результат 2:

Operations to perform:
Apply all migrations: admin, auth, contenttypes, mainsite, sessions
Running migrations:
Applying mainsite.0001_initial... OK

наконец, runserver. Готово

7

На самом деле проблема была в том, что таблица так и не была создана. Так как я довольно новичок в Django, я не знал, что./manage.py syncdb не обновляет существующие модели, а создает только те, которые не существуют.

Потому что модель "Сервер" существовал до того, как я добавил другую модель, и он уже был в db, 'a syncdb' на самом деле не создавать новые таблицы.

9

Как совет на будущее, посмотрите вюгочень полезная утилита для применения изменений вашей модели в базе данных без необходимости создавать новую базу данных каждый раз, когда вы меняете модель (и).

С его помощью вы можете легко:python manage.py migrate app_name и Юг напишет ваши изменения модели. документация это довольно просто.

1

для django 1.9 это то, что я сделал, и это решило проблему.

python manage.py makemigrations app_name

python manage.py migrate

4

Я встречаю ту же проблему сегодня и исправляю ее. Я думаю, что вы пропустите какую-то команду в уроке 1. просто следуйте:

./python manage.py makemigrations polls
python manage.py sql polls
./python manage.py syncdb

затем исправьте это и получите таблицы опроса, и вы можете увидеть созданную таблицу. Вы должны прочитатьmanage.py makemigrations команда.

Похожие вопросы