Czytelnicy tacy jak ty pomagają wspierać MUO. Kiedy dokonujesz zakupu za pomocą linków na naszej stronie, możemy otrzymać prowizję partnerską.

Relacja bazy danych opisuje połączenie między różnymi tabelami bazy danych. Relacje określają sposób przechowywania i pobierania danych. Django dobrze współpracuje z systemami relacyjnych baz danych (RDBMS). W związku z tym obsługuje relacje między tabelami bazy danych.

Typy relacji zależą od wymagań aplikacji i danych, które modeluje. Dobre relacje między modelami Django a bazą danych poprawiają utrzymanie danych. Obejmuje to poprawę wydajności zapytań i zmniejszenie powielania danych.

Możesz dowiedzieć się, jak relacje bazy danych Django wpływają na wydajność aplikacji, badając trzy główne typy relacji.

Relacje z bazami danych

Systemy relacyjnych baz danych obsługują trzy typy relacji z bazami danych. Są to relacje jeden-do-wielu, wiele-do-wielu i jeden-do-jednego. Typ relacji z bazą danych wpływa na przypadki użycia aplikacji.

Modele Django reprezentują tabele bazy danych w aplikacji. Aby stworzyć dobry system baz danych, należy stworzyć dobre relacje między tabelami. Relacje z bazami danych określają sposób przechowywania i prezentowania danych w Twojej aplikacji.

Aby zrozumieć relacje z bazą danych, zacznij od tworzenie projektu Django o imieniu Kaptury. Aplikacja będzie sąsiedzkim portalem społecznościowym. Będzie zarządzać działaniami społecznymi, bezpieczeństwem i biznesem różnych dzielnic.

Mieszkańcy mogą się rejestrować, logować i tworzyć profile. Mogą także tworzyć posty i reklamy biznesowe, które każdy może zobaczyć.

Aby rozpocząć, utwórz bazę danych, w której będą przechowywane wszystkie dane o sąsiedztwie. Następnie utworzysz modele Profil, Sąsiedztwo, Biznes i Poczta. Aby utworzyć modele, należy określić relacje, których potrzebują tabele bazy danych.

Relacja bazy danych jeden do jednego

Relacja jeden do jednego oznacza, że ​​rekord w jednym modelu Django odnosi się do innego rekordu w innym modelu. Te dwa rekordy są od siebie zależne. W tym przypadku Wzór profilu zależy od Model użytkownika tworzenia profili mieszkańców.

Tak więc dla każdego mieszkańca zarejestrowanego w aplikacji może istnieć tylko jeden profil. Ponadto bez użytkownika profil nie może istnieć.

z django.db import modele
zDjango.wkład.uwierz.modeleimportUżytkownik

klasaProfil(modele. Model):
użytkownik = modele. OneToOneField (użytkownik, on_delete=models. KASKADA, nazwa_pokrewna='profil')
nazwa = modele. CharField (max_length=80, puste =PRAWDA)
bio = modele. Pole tekstowe (maks. długość=254, puste =PRAWDA)
zdjęcie_profilu = CloudinaryField('zdjęcie profilowe', domyślnie='domyślny.png')
lokalizacja = modele. CharField (max_length=50, puste =PRAWDA, zero=PRAWDA)
e-mail = modele. Pole e-mail(zero=PRAWDA)

pok__str__(samego siebie):
powrót F'{samego siebie.user.username} profil”

Model użytkownika Django to wbudowany model uwierzytelniania w Django. Nie musisz tworzyć dla niego modelu. Zamiast tego zaimportuj go z django.contrib.auth. The pole jeden na jeden () na Wzór profilu definiuje relację jeden do jednego.

The on_delete=modele. KASKADA argument uniemożliwia usunięcie jednego z tych rekordów. Musisz usunąć rekordy z obu tabel.

Możesz użyć interfejsu administratora Django do wizualizacji relacji w swojej aplikacji. Aby zalogować się do administratora Django, musisz zarejestrować się jako administrator znany jako a superużytkownik.

Utwórz superużytkownika, uruchamiając następujące polecenie na terminalu:

pytonzarządzać.pytworzy superużytkownika

Pojawi się monit o podanie nazwy użytkownika, adresu e-mail i hasła. Gdy to zrobisz, uruchom serwer.

Otwórz stronę administracyjną w przeglądarce, korzystając z adresu URL http://127.0.0.1:8000/admin.

Zobaczysz stronę administratora, na której możesz zalogować się przy użyciu utworzonych wcześniej poświadczeń. Po zalogowaniu zobaczysz tzw Grupy I Użytkownicy obiekty. Struktura uwierzytelniania Django zarządza tymi dwoma modelami. Na dole zobaczysz tzw Wzór profilu.

Otworzyć Profil model i przejdź do dodawania profilu. Zobaczysz, że wygląda to następująco:

Zauważ, że masz możliwość utworzenia profilu dla użytkownika. Typ danych OneToOneField() umożliwia tworzenie profili dla uwierzytelnionych użytkowników. W ten sposób aplikacja administruje relacjami jeden do jednego.

Relacje jeden do wielu

Relacja jeden-do-wielu oznacza, że ​​jeden rekord w modelu jest powiązany z wieloma rekordami w innym modelu. Nazywa się to również relacją wiele do jednego.

W twoim przypadku jeden administrator może utworzyć kilka dzielnic. Ale każda dzielnica może należeć tylko do jednego administratora. Do zdefiniowania takiej relacji można użyć typu danych ForeignKey.

Django ma wbudowany interfejs administratora. Nie musisz tworzyć dla niego modelu. Administrator ma uprawnienia do zarządzania treścią i wizualizacji aplikacji z poziomu panelu administratora.

Model obsługujący wiele rekordów będzie miał tzw Klucz obcy. Definiuje relację jako jeden do wielu. Poniższy kod pokazuje, gdzie umieścić klucz.

klasaSąsiedztwo(modele. Model):
administrator = modele. Klucz obcy("Profil", on_delete=modele. KASKADA, nazwa_pokrewna='kaptur')
nazwa = modele. CharField (max_length=50)
lokalizacja = modele. CharField (maks. długość=60)
logo_kaptura = CloudinaryField('kaptur_logo', domyślnie='domyślny.png')
opis = modele. Pole tekstowe()
zdrowie_tell = modele. Pole liczb całkowitych (zero=PRAWDA, puste =PRAWDA)
numer_policyjny = modele. Pole liczb całkowitych (zero=PRAWDA, puste =PRAWDA)
Liczba = modele. Pole liczb całkowitych (zero=PRAWDA, puste =PRAWDA)

pok__str__(samego siebie):
powrót F'{samego siebie.nazwa} kaptur'

Możesz zobaczyć zależność w aplikacji, jak pokazano na obrazku:

The Sąsiedztwo model ma teraz administratora. Aby ktokolwiek mógł utworzyć okolicę, musi mieć uprawnienia administratora. A jedna dzielnica nie może mieć wielu administratorów.

Relacje w bazie danych wiele do wielu

W relacjach wiele-do-wielu wiele rekordów w jednym modelu jest powiązanych z innymi w innym. Na przykład Post I Biznes modele mogą mieć kilka wzajemnych rekordów. Użytkownicy mogą zamieścić kilka ogłoszeń biznesowych w swoich postach i odwrotnie.

Jednak tworzenie relacji wiele-do-wielu może prowadzić do niedokładnych danych. W innych frameworkach musiałbyś utworzyć nową tabelę, aby połączyć dwie tabele.

Django ma na to rozwiązanie. Kiedy używasz pola wiele-do-wielu, tworzy ono nową tabelę mapującą dwie tabele razem. Możesz umieścić pole wiele-do-wielu w jednym z dwóch modeli, ale nie powinno ono występować w obu modelach.

klasaPost(modele. Model):
tytuł = modele. CharField (max_length=120, zero=PRAWDA)
poczta = modele. Pole tekstowe()
data = modele. DateTimeField (auto_now_add=PRAWDA)
użytkownik = modele. ForeignKey (profil, on_delete=models. KASKADA, nazwa_pokrewna='właściciel_poczty')
kaptur = modele. ForeignKey (NeighbourHood, on_delete=models. KASKADA, nazwa_pokrewna='kaptur_post')
biznes = modele. Pole ManyToMany (Biznesowe)

pok__str__(samego siebie):
powrót F'{samego siebie.tytuł} post”

Teraz, kiedy przeglądasz Post modelu w panelu administratora, możesz dołączyć kilka firm do jednego posta.

Django upraszcza relacje z bazami danych

Typ bazy danych używanej w aplikacji określa sposób wykorzystania danych. Django ma kompleksowy system, który ułatwia łączenie i obsługę relacyjnych baz danych.

Funkcje Django ułatwiają przechowywanie i pobieranie danych z powiązanych tabel. Ma wbudowane interfejsy API, które łączą i tworzą relacje z bazą danych dla Twojej aplikacji.

Relacje z bazą danych określają zachowanie aplikacji. To, czy korzystasz z relacji jeden-do-jednego, jeden-do-wielu czy wiele-do-wielu, zależy od Ciebie.

Dzięki Django możesz konfigurować i testować funkcje bez psucia aplikacji. Użyj Django, aby zabezpieczyć systemy baz danych i zoptymalizować doświadczenie programisty.