Нужен ли models.py даже для готовых баз данных mysql? - PullRequest
0 голосов
/ 31 октября 2019

Я раскручиваю проект Django. После этого я не писал models.py, а вместо этого создал базу данных из командной строки MySQL (независимо от django) и создал три таблицы с необходимыми столбцами. Наконец, я успешно соединил свое приложение django с этой базой данных. Я применил миграции. Но теперь я запутался, нужно ли мне писать models.py с каждым именем поля, как в столбце?

Я помню, как реализовывал базовый проект, в котором я написал модель.py и создал базу данных, используя "python manage.py shell", а затем поместил значения, используя "из polls.models import Choice, Question"? Как мне поместить данные сейчас, а затем использовать python для некоторых действий из пользовательского интерфейса?

1 Ответ

1 голос
/ 02 ноября 2019

Нужно ли мне models.py даже для готовых баз данных mysql?

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

Вы можете написать свои собственные запросы, формы и т. Д. Но часто, используя ModelForm, Django может, например, удалить большое количествостандартный код. Более того, это уменьшит вероятность ошибок в вашем коде. Поэтому, хотя это и не является строго обязательным, модели обычно являются краеугольным камнем в том, как Django может помочь вам.

Вы можете использовать команду inspectdb [Django-doc] чтобы проверить базу данных, и пусть Django "набросает" модели для вас. Обычно у вас будет еще немного работы. Так как Django может, например, не получить, что поле является EmailField, так как и CharField и EmailField выглядят одинаково на стороне базы данных.

Вам не нужно использовать inspectdb однако. Вы можете создавать свои собственные модели. Если вы создаете свои собственные модели, но они уже существуют на стороне базы данных, вы можете установить managed = False [Django-doc] в Meta вашей модели,помешать Джанго построить миграцию.

...