Нужно ли создавать отдельный класс в моем models.py при использовании пользователя импорта django.contrib.auth.models? - PullRequest
0 голосов
/ 06 марта 2012

Оператор импорта импортирует необходимые детали.но класс "пользователь" уже создан, когда вы помещаете это в свои установленные приложения?или вам еще нужно уточнить в models.py, чтобы сделать таблицу в БД?или кто-то может рассказать о том, как использовать пользователей и сессии django?Я сейчас просматриваю документы по Django, и они все просто обсуждают, как использовать эту штуку один раз.они никогда не помещают код в синтаксис, где пользователи будут использовать код через браузер, а не вы через оболочку python.

Ответы [ 4 ]

0 голосов
/ 06 марта 2012

Любой класс, расширяющий Model класс в models.py, вносит свой вклад в схему базы данных.Это означает, что django ищет ваши (и также ядро ​​django) model.py файлы и ищет любой класс, который расширяет Model, например:

some models.py

class SomeModel(Model):
    ...
    ...

class Otherthing(Model):
    ...

, который также применяется для файлов кода ядра django.Поскольку все таблицы базы данных названы с использованием метки приложения и имени модели, базы данных, созданные django, также имеют ...

Например,

from django.contrib.auth.models import User

Если вы отслеживаете файловую иерархию django -> contrib -> auth иОткройте файл models.py, вы увидите соответствующую модель.Здесь также есть другие классы моделей, например, модели Permission и Group.

Поскольку эти модели применяются под auth, таблицы базы данных auth_user, auth_perission и auth_group

Когда вы запускаете команду manage.py syncdb в первый раз, django создаст эти таблицы ...

0 голосов
/ 06 марта 2012

Здесь происходит много вещей.Как вы знаете, Django поставляется с рядом пакетов "contrib", которые можно использовать в вашем приложении.Вы «активируете» их, поместив их в INSTALLED_APPS.

. При запуске python manage.py syncdb Django анализирует файлы models.py каждого приложения в INSTALLED_APPS и создает связанные таблицы в вашей базе данных.Итак, как только вы добавили django.contrib.auth к вашему INSTALLED_APPS и запустили syncdb, таблицы для User и Group готовы и готовы к использованию.

Теперь, если вы хотитеиспользуйте эти модели в других своих приложениях, вы можете импортировать их, как вы упомянули, что-то вроде from django.contrib.auth.models import User.Затем вы можете сделать что-то вроде создания ForeignKey, OneToOneField или ManyToManyField на одной из ваших моделей для модели User.Когда вы делаете это, таблицы не создаются (за исключением ManyToManyField; подробнее об этом чуть позже).Одна и та же таблица всегда используется для User, так же как и для любой из ваших собственных моделей, между которыми вы можете создавать отношения.

ManyToManyField s немного отличаются тем, что создается промежуточная таблица (часто называемая«таблица соединения»), которая связывает обе стороны отношений вместе.Тем не менее, это чисто для целей этой конкретной взаимосвязи - ничто в реальной таблице User не отличается и не изменяется каким-либо образом.

Дело в том, что одна таблица создана для User иэта же таблица используется для хранения всех User независимо от того, в каком контексте они были созданы. Вы можете импортировать User во все ваши приложения, создавать столько разноплановых отношений, сколько захотите, и на самом деле ничего не изменится.Что касается User.

0 голосов
/ 06 марта 2012

Если имя таблицы или что-то еще не соответствует вашим потребностям, вы всегда можете просто расширить модель User.

from django.contrib.auth.models import User

class Employee(User):
    ...
0 голосов
/ 06 марта 2012

Все установленные приложения могут вносить вклад в схему базы данных. django.contrib.auth.models вносит вклад, помимо прочего, в таблицу auth_user, стоящую за моделью django.contrib.auth.models.User, поэтому вам не нужно беспокоиться о ее воссоздании, если у вас нет особых причин для этого.

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