Читаоци попут вас помажу у подршци МУО. Када обавите куповину користећи везе на нашем сајту, можда ћемо зарадити провизију за партнере.

Однос базе података описује везу између различитих табела базе података. Релације одређују начин складиштења и преузимања података. Дјанго добро ради са системима релационих база података (РДБМС). Он, дакле, подржава односе табела базе података.

Типови односа зависе од захтева ваше апликације и података које моделира. Добри односи између Дјанго модела и базе података побољшавају одржавање података. То укључује побољшање перформанси упита и смањење дуплирања података.

Можете научити како Дјанго односи базе података утичу на перформансе апликације тако што ћете истражити три главна типа односа.

Односи базе података

Системи релационих база података подржавају три типа односа базе података. Ови односи су један-према-више, много-према-више и један-према-један. Тип односа базе података утиче на случајеве употребе ваше апликације.

Дјанго модели представљају табеле базе података у апликацији. Морате створити добре односе између табела да бисте створили добар систем базе података. Релације базе података одређују како да ускладиштите и представите податке у вашој апликацији.

instagram viewer

Да бисте разумели односе базе података, почните од креирање Дјанго пројекта назван Хоодс. Апликација ће бити друштвена мрежа у окружењу. Управљаће друштвеним активностима, безбедношћу и пословима различитих насеља.

Становници се могу регистровати, пријавити и креирати профиле. Они такође могу да креирају постове и пословне огласе које сви могу да виде.

Да бисте започели, направите базу података која ће чувати све податке о комшилуку. Затим ћете креирати моделе Профил, НеигхборХоод, Бусинесс и Пост. Да бисте креирали моделе, морате одредити однос који је потребан за табеле базе података.

Однос базе података један-на-један

Однос један на један подразумева да се запис у једном Дјанго моделу односи на други запис у другом моделу. Два записа зависе један од другог. У овом случају, Модел профила зависи од Модел корисника да креирате резидентне профиле.

Дакле, може постојати само један профил за сваког становника регистрованог у апликацији. Такође, без корисника, профил не може постојати.

из дјанго.дб увоз модели
издјанго.цонтриб.аутх.моделиувозКорисник

класаПрофил(модели. модел):
корисник = модели. ОнеТоОнеФиелд (Корисник, он_делете=модели. ЦАСЦАДЕ, сродно_име='профил')
назив = модели. ЦхарФиелд (мак_ленгтх=80, празно=Истина)
био = модели. Поље за текст (мак_ленгтх=254, празно=Истина)
профиле_пицтуре = ЦлоудинариФиелд('профил_слика', дефаулт='дефаулт.пнг')
локација = модели. ЦхарФиелд (мак_ленгтх=50, празно=Истина, нула=Истина)
емаил = модели. ЕмаилФиелд(нула=Истина)

деф__стр__(сам):
повратак ф'{селф.усер.усернаме} профил'

Дјанго модел корисника је уграђени модел аутентификације у Дјангу. Не морате да правите модел за то. Уместо тога, увезите га из дјанго.цонтриб.аутх. Тхе ОнеТоОнеФиелд() на Модел профила дефинише однос један-на-један.

Тхе он_делете=модели. ЦАСЦАДЕ аргумент спречава брисање једног од ових записа. Морате избрисати записе из обе табеле.

Можете да користите Дјанго администраторски интерфејс за визуелизацију односа у вашој апликацији. Да бисте се пријавили на Дјанго администратора, морате се регистровати као администраторски корисник познат као а суперкорисник.

Креирајте суперкорисника покретањем следеће команде на терминалу:

питхонуправљати.пицреатесуперусер

Појавиће се упит за унос корисничког имена, е-поште и лозинке. Када то урадите, покрените сервер.

Отворите администраторску страницу у прегледачу користећи УРЛ http://127.0.0.1:8000/admin.

Видећете администраторску страницу на којој се можете пријавити са акредитивима које сте претходно креирали. Када се пријавите, видећете Групе и Корисници објеката. Дјанго оквир за аутентификацију управља ова два модела. На дну ћете видети Модел профила.

Отвори Профил модел и наставите да додате профил. Видећете да се појављује на следећи начин:

Имајте на уму да имате опцију да креирате профил за корисника. Тип података ОнеТоОнеФиелд() вам омогућава да креирате профиле за аутентификоване кориснике. Овако апликација управља односима један на један.

Односи један-према-више

Однос један-према-више имплицира да се један запис у моделу повезује са многим записима у другом моделу. Такође се назива односом више на један.

У вашем случају, један администратор може да направи неколико комшилука. Али свако насеље може припадати само једном администратору. Можете користити тип података ФореигнКеи да дефинишете такав однос.

Дјанго има уграђени администраторски интерфејс. Не морате да правите модел за то. Администратор има право да управља садржајем и визуализује апликацију са административног панела.

Модел који прихвата многе записе имаће Страни кључ. Дефинише однос као један према више. Код у наставку показује где треба поставити кључ.

класаКомшилук(модели. модел):
админ = модели. Страни кључ("Профил", он_делете=модели. ЦАСЦАДЕ, сродно_име='хоод')
назив = модели. ЦхарФиелд (мак_ленгтх=50)
локација = модели. ЦхарФиелд (макс._ленгтх=60)
хоод_лого = ЦлоудинариФиелд('хоод_лого', дефаулт='дефаулт.пнг')
опис = модели. Текстуално поље()
хеалтх_телл = модели. ИнтегерФиелд(нула=Истина, празно=Истина)
полицијски_број = модели. ИнтегерФиелд(нула=Истина, празно=Истина)
Број = модели. ИнтегерФиелд(нула=Истина, празно=Истина)

деф__стр__(сам):
повратак ф'{селф.наме} хоод'

Можете видети однос у апликацији као што је илустровано на слици:

Тхе Комшилук модел сада има администратора. Да би било ко створио комшилук, мора да има администраторска права. А један кварт не може имати много администратора.

Релације базе података „много-према-више“.

У односима „много према више“, многи записи у једном моделу се повезују са другима у другом. На пример, тхе пошта и Посао модели могу имати неколико записа једни о другима. Корисници могу направити неколико пословних огласа у својим објавама и обрнуто.

Међутим, креирање односа „много-према-много“ може довести до нетачних података. У другим оквирима, морали бисте да креирате нову табелу да бисте спојили две табеле.

Дјанго има решење за ово. Када користите поље много-према-више, оно креира нову табелу која мапира две табеле заједно. Поље „много према много“ можете ставити у било који од два модела, али не би требало да буде у оба модела.

класапошта(модели. модел):
наслов = модели. ЦхарФиелд (мак_ленгтх=120, нула=Истина)
пост = модели. Текстуално поље()
датум = модели. ДатеТимеФиелд (ауто_нов_адд=Истина)
корисник = модели. ФореигнКеи (профил, он_делете=модели. ЦАСЦАДЕ, сродно_име='пост_овнер')
хауба = модели. ФореигнКеи (НеигхбоурХоод, он_делете=модели. ЦАСЦАДЕ, сродно_име='хоод_пост')
посао = модели. МаниТоМаниФиелд (бизнис)

деф__стр__(сам):
повратак ф'{селф.титле} пост'

Сада, када погледате пошта модел на админ панелу, можете приложити неколико предузећа на један пост.

Дјанго поједностављује односе базе података

Тип базе података коју користите за своју апликацију одређује како искористити податке. Дјанго има свеобухватан систем који олакшава повезивање и рад са релационим базама података.

Дјанго функције олакшавају складиштење и преузимање података из повезаних табела. Има уграђене АПИ-је који повезују и креирају односе базе података за вашу апликацију.

Односи базе података одређују понашање ваше апликације. Од вас зависи да ли користите односе један-на-један, један-према-више или више-према-много.

Помоћу Дјанга можете да конфигуришете и тестирате функције без квара апликације. Користите Дјанго да обезбедите системе база података и оптимизујете своје искуство програмера.