Такие читатели, как вы, помогают поддерживать MUO. Когда вы совершаете покупку по ссылкам на нашем сайте, мы можем получать партнерскую комиссию.
Связь базы данных описывает связь между различными таблицами базы данных. Отношения определяют, как хранить и извлекать данные. Django хорошо работает с системами реляционных баз данных (RDBMS). Таким образом, он поддерживает отношения таблиц базы данных.
Типы отношений зависят от требований вашего приложения и данных, которые оно моделирует. Хорошие отношения между моделями Django и базой данных улучшают обслуживание данных. Это включает в себя повышение производительности запросов и уменьшение дублирования данных.
Вы можете узнать, как отношения базы данных Django влияют на производительность приложения, изучив три основных типа отношений.
Отношения с базой данных
Системы реляционных баз данных поддерживают три типа отношений между базами данных. Это отношения «один ко многим», «многие ко многим» и «один к одному». Тип связи с базой данных влияет на варианты использования вашего приложения.
Джанго модели представляют таблицы базы данных в приложении. Вы должны создать хорошие отношения между таблицами, чтобы создать хорошую систему базы данных. Отношения базы данных определяют, как хранить и представлять данные в вашем приложении.
Чтобы понять отношения базы данных, начните с создание проекта Джанго названный Вытяжки. Приложение будет соседской социальной сетью. Он будет управлять социальной деятельностью, безопасностью и бизнесом различных районов.
Жители могут регистрироваться, входить в систему и создавать профили. Они также могут создавать посты и бизнес-рекламу для всеобщего обозрения.
Для начала создайте базу данных, в которой будут храниться все данные о районе. Затем вы создадите модели Profile, NeighborHood, Business и Post. Чтобы создать модели, вы должны определить взаимосвязь, необходимую таблицам базы данных.
Отношение к базе данных «один к одному»
Связь «один к одному» подразумевает, что запись в одной модели Django связана с другой записью в другой модели. Две записи зависят друг от друга. В этом случае Модель профиля зависит от Пользовательская модель для создания резидентных профилей.
Таким образом, может быть только один профиль для каждого жителя, зарегистрированного в приложении. Также без пользователя профиль не может существовать.
от django.db Импортировать модели
отДжанго.contrib.auth.моделиИмпортироватьПользовательсортПрофиль(модели. Модель):
пользователь = модели. OneToOneField (Пользователь, on_delete=models. КАСКАД, related_name='профиль')
имя = модели. CharField (max_length=80, пусто =Истинный)
био = модели. Текстовое поле (max_length=254, пусто =Истинный)
profile_picture = CloudinaryField('изображение профиля', по умолчанию ='по умолчанию.png')
местоположение = модели. CharField (max_length=50, пусто =Истинный, нулевой=Истинный)
электронная почта = модели. Поле электронной почты(нулевой=Истинный)
деф__str__(себя):
возвращаться ж'{себя.user.username} профиль'
Модель пользователя Django — это встроенная модель аутентификации в Django. Вам не нужно создавать для него модель. Вместо этого импортируйте его из django.contrib.auth. OneToOneField() на Модель профиля определяет отношение один к одному.
on_delete=модели. КАСКАД аргумент предотвращает удаление одной из этих записей. Вы должны удалить записи из обеих таблиц.
Вы можете использовать интерфейс администратора Django, чтобы визуализировать отношения в вашем приложении. Чтобы войти в систему администратора Django, вы должны зарегистрироваться как пользователь-администратор, известный как суперпользователь.
Создайте суперпользователя, выполнив в терминале следующую команду:
питонуправлять.pyсоздает суперпользователя
Будет предложено ввести имя пользователя, адрес электронной почты и пароль. Как только вы это сделаете, запустите сервер.
Откройте страницу администратора в браузере, используя URL http://127.0.0.1:8000/admin.
Вы увидите страницу администратора, где вы можете войти с учетными данными, которые вы создали ранее. После авторизации вы увидите Группы и Пользователи объекты. Платформа аутентификации Django управляет этими двумя моделями. Внизу вы увидите Профильная модель.
Открой Профиль модели и перейдите к добавлению профиля. Вы увидите, что это выглядит следующим образом:
Обратите внимание, что у вас есть возможность создать профиль для пользователя. Тип данных OneToOneField() позволяет создавать профили для аутентифицированных пользователей. Вот как приложение управляет отношениями один к одному.
Отношения «один ко многим»
Связь «один ко многим» подразумевает, что одна запись в модели связана со многими записями в другой модели. Его также называют отношением «многие к одному».
В вашем случае один админ может создать несколько районов. Но каждый район может принадлежать только одному администратору. Вы можете использовать тип данных ForeignKey для определения такой связи.
Django имеет встроенный интерфейс администратора. Вам не нужно создавать для него модель. Администратор имеет право управлять контентом и визуализировать приложение из панели администратора.
Модель, вмещающая множество записей, будет иметь Внешний ключ. Он определяет отношение как один ко многим. В приведенном ниже коде показано, где разместить ключ.
сортРайон(модели. Модель):
админ = модели. Внешний ключ("Профиль", on_delete=модели. КАСКАД, related_name='капюшон')
имя = модели. CharField (max_length=50)
местоположение = модели. CharField (max_length=60)
hood_logo = Облачное поле('hood_logo', по умолчанию ='по умолчанию.png')
описание = модели. Текстовое поле()
health_tell = модели. ЦелочисленноеПоле(нулевой=Истинный, пусто =Истинный)
Police_number = модели. ЦелочисленноеПоле(нулевой=Истинный, пусто =Истинный)
Количество = модели. ЦелочисленноеПоле(нулевой=Истинный, пусто =Истинный)
деф__str__(себя):
возвращаться ж'{себя.имя} капюшон'
Вы можете увидеть взаимосвязь в приложении, как показано на рисунке:
Район модель теперь имеет администратора. Чтобы создать район, у него должны быть права администратора. И в одном районе не может быть много администраторов.
Отношения базы данных «многие ко многим»
В отношениях «многие ко многим» многие записи в одной модели связаны с другими в другой. Например, Почта и Бизнес модели могут иметь несколько записей друг о друге. Пользователи могут размещать несколько бизнес-объявлений в своих сообщениях и наоборот.
Однако создание связей «многие ко многим» может привести к неточным данным. В других фреймворках вам пришлось бы создать новую таблицу, чтобы соединить две таблицы.
У Django есть решение для этого. Когда вы используете поле «многие ко многим», создается новая таблица, сопоставляющая две таблицы вместе.. Вы можете поместить поле «многие ко многим» в любую из двух моделей, но его не должно быть в обеих моделях.
сортПочта(модели. Модель):
название = модели. CharField (max_length=120, нулевой=Истинный)
пост = модели. Текстовое поле()
дата = модели. DateTimeField (auto_now_add=Истинный)
пользователь = модели. Внешний ключ (профиль, on_delete=models. КАСКАД, related_name='post_owner')
капюшон = модели. ForeignKey (NeighbourHood, on_delete=models. КАСКАД, related_name='hood_post')
бизнес = модели. ManyToManyField (Бизнес)
деф__str__(себя):
возвращаться ж'{себя.title} сообщение'
Теперь, когда вы просматриваете Почта модель в админке, к одному посту можно прикрепить несколько бизнесов.
Django упрощает отношения с базой данных
Тип базы данных, которую вы используете для своего приложения, определяет, как использовать данные. Django имеет комплексную систему, которая упрощает подключение и работу с реляционными базами данных.
Возможности Django упрощают хранение и извлечение данных из связанных таблиц. Он имеет встроенные API-интерфейсы, которые подключаются и создают отношения базы данных для вашего приложения.
Отношения с базой данных определяют поведение вашего приложения. Используете ли вы отношения «один к одному», «один ко многим» или «многие ко многим», зависит от вас.
С Django вы можете настраивать и тестировать функции, не нарушая работу вашего приложения. Используйте Django для защиты систем баз данных и оптимизации работы разработчика.