Читатели като вас помагат в подкрепа на MUO. Когато правите покупка чрез връзки на нашия сайт, ние може да спечелим комисионна за партньор.
Връзка с база данни описва връзката между различни таблици на база данни. Отношенията определят как да се съхраняват и извличат данни. Django работи добре с системи за релационни бази данни (RDBMS). Следователно поддържа релации на таблица на база данни.
Типовете релации зависят от изискванията на вашето приложение и данните, които то моделира. Добрите връзки между Django моделите и базата данни подобряват поддръжката на данни. Това включва подобряване на производителността на заявките и намаляване на дублирането на данни.
Можете да научите как релациите на базата данни на Django влияят върху производителността на приложението, като изследвате трите основни типа релации.
Връзки с бази данни
Системите за релационни бази данни поддържат три типа релации на бази данни. Тези отношения са едно към много, много към много и едно към едно. Типът релация на базата данни влияе върху случаите на използване на вашето приложение.
Django модели представляват таблици на база данни в приложението. Трябва да създадете добри връзки между таблиците, за да създадете добра система от бази данни. Релациите на базата данни определят как да съхранявате и представяте данни във вашето приложение.
За да разберете връзките в базата данни, започнете с създаване на Django проект на име Качулки. Приложението ще бъде квартална социална мрежа. Той ще управлява различни социални дейности, сигурност и бизнес в различни квартали.
Жителите могат да се регистрират, влизат и създават профили. Те могат също да създават публикации и бизнес реклами, които всички да виждат.
За да започнете, създайте база данни, която ще съхранява всички данни за квартала. След това ще създадете моделите Profile, NeighborHood, Business и Post. За да създадете моделите, трябва да определите връзката, от която се нуждаят таблиците на базата данни.
Връзка с база данни „един към един“.
Връзката едно към едно предполага, че запис в един модел на Django е свързан с друг запис в друг модел. Двата рекорда зависят един от друг. В този случай, Профил модел зависи от Потребителски модел за създаване на резидентни профили.
Така че може да има само един профил за всеки жител, регистриран в приложението. Също така, без потребител не може да съществува профил.
от django.db импортиране модели
отДжанго.contrib.auth.моделиимпортиранеПотребителкласПрофил(модели. Модел):
потребител = модели. OneToOneField (Потребител, on_delete=модели. CASCADE, родствено_име='профил')
име = модели. CharField (max_length=80, празно=Вярно)
био = модели. TextField (max_length=254, празно=Вярно)
profile_picture = CloudinaryField('снимка на профила', по подразбиране='default.png')
местоположение = модели. CharField (max_length=50, празно=Вярно, нула=Вярно)
имейл = модели. EmailField(нула=Вярно)
деф__str__(себе си):
връщане е'{себе си.user.username} профил'
Потребителският модел на Django е вграден модел за удостоверяване в Django. Не е нужно да създавате модел за него. Вместо това го импортирайте от django.contrib.auth. The OneToOneField() на Профил модел дефинира връзка едно към едно.
The on_delete=модели. КАСКАДА аргумент предотвратява изтриването на един от тези записи. Трябва да изтриете записите и от двете таблици.
Можете да използвате администраторския интерфейс на Django, за да визуализирате връзката във вашето приложение. За да влезете в Django admin, трябва да се регистрирате като администратор, известен като a суперпотребител.
Създайте суперпотребител, като изпълните следната команда на терминала:
питонуправлявам.pyсъздайте суперпотребител
Ще има подкана да въведете вашето потребителско име, имейл и парола. След като го направите, стартирайте сървъра.
Отворете страницата на администратора в браузър, като използвате URL адреса http://127.0.0.1:8000/admin.
Ще видите администраторската страница, където можете да влезете с идентификационните данни, които сте създали по-рано. След като влезете, ще видите Групи и Потребители обекти. Рамката за удостоверяване на Django управлява тези два модела. В долната част ще видите Профил модел.
Отвори Профил модел и продължете към добавяне на профил. Ще видите, че изглежда както следва:
Забележете, че имате опцията да създадете профил за потребител. Типът данни OneToOneField() ви позволява да създавате профили за удостоверени потребители. Ето как приложението администрира взаимоотношенията едно към едно.
Връзки „един към много“.
Връзката "един към много" предполага, че един запис в модел се свързва с много записи в друг модел. Нарича се също като връзка много към едно.
Във вашия случай един администратор може да създаде няколко квартала. Но всеки квартал може да принадлежи само на един администратор. Можете да използвате типа данни ForeignKey, за да дефинирате такава връзка.
Django има вграден администраторски интерфейс. Не е нужно да създавате модел за него. Администраторът има право да управлява съдържанието и да визуализира приложението от административния панел.
Моделът, който побира много записи, ще има ForeignKey. Той определя връзката като едно към много. Кодът по-долу показва къде да поставите ключа.
класквартал(модели. Модел):
администратор = модели. ForeignKey("Профил", on_delete=модели. CASCADE, родствено_име='качулка')
име = модели. CharField (max_length=50)
местоположение = модели. CharField (max_length=60)
hood_logo = CloudinaryField('hood_logo', по подразбиране='default.png')
описание = модели. Текстово поле()
health_tell = модели. IntegerField(нула=Вярно, празно=Вярно)
полицейски_номер = модели. IntegerField(нула=Вярно, празно=Вярно)
Брой = модели. IntegerField(нула=Вярно, празно=Вярно)
деф__str__(себе си):
връщане е'{себе си.name} качулка'
Можете да видите връзката в приложението, както е показано на снимката:
The Съседство моделът вече има администратор. За да може всеки да създаде квартал, трябва да има администраторски права. А един квартал не може да има много администратори.
Взаимоотношения много към много база данни
При релации много към много много записи в един модел се свързват с други в друг. Например, на Публикувай и Бизнес моделите могат да имат няколко записа един за друг. Потребителите могат да правят няколко бизнес реклами в своите публикации и обратно.
Създаването на релации много към много обаче може да доведе до неточни данни. В други рамки ще трябва да създадете нова таблица, за да съедините двете таблици.
Django има решение за това. Когато използвате полето много към много, то създава нова таблица, съпоставяща двете таблици заедно. Можете да поставите полето много към много във всеки от двата модела, но то не трябва да бъде и в двата модела.
класПубликувай(модели. Модел):
заглавие = модели. CharField (max_length=120, нула=Вярно)
пост = модели. Текстово поле()
дата = модели. DateTimeField (auto_now_add=Вярно)
потребител = модели. ForeignKey (Профил, on_delete=модели. CASCADE, родствено_име='собственик на публикация')
качулка = модели. ForeignKey (NeighbourHood, on_delete=модели. CASCADE, родствено_име='стълб_качулка')
бизнес = модели. ManyToManyField (бизнес)
деф__str__(себе си):
връщане е'{себе си.title} публикация'
Сега, когато разглеждате Публикувай модел в админ панела, можете да прикачите няколко бизнеса към една публикация.
Django опростява връзките с бази данни
Типът база данни, която използвате за вашето приложение, определя как да използвате данните. Django има цялостна система, която прави свързването и работата с релационни бази данни лесно.
Функциите на Django улесняват съхраняването и извличането на данни от свързани таблици. Той има вградени API, които се свързват и създават връзки с бази данни за вашето приложение.
Връзките на базата данни определят поведението на вашето приложение. Дали ще използвате релации "един към един", "един към много" или "много към много" зависи от вас.
С Django можете да конфигурирате и тествате функции, без да нарушавате приложението си. Използвайте Django, за да защитите системите от бази данни и да оптимизирате опита си на разработчици.