Zrozumienie relacji z bazą danych w Django

Zrozumienie relacji z bazą danych w Django
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.





WYKORZYSTAJ WIDEO DNIA

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 nazwie 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 okolicy. 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ć.

jak uzyskać motyw aero w systemie Windows 10
from django.db import models 
from django.contrib.auth.models import User

class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
name = models.CharField(max_length=80, blank=True)
bio = models.TextField(max_length=254, blank=True)
profile_picture = CloudinaryField('profile_picture', default='default.png')
location = models.CharField(max_length=50, blank=True, null=True)
email = models.EmailField(null=True)

def __str__(self):
return f'{self.user.username} profile'

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 .

jak przenieść z komputera na komputer

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

python manage.py createsuperuser

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

Otwórz stronę administratora 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 oraz 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:

  Administrator Django wyświetlający relacje między profilem a modelami użytkowników

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

A 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.

class NeighbourHood(models.Model): 
admin = models.ForeignKey("Profile", on_delete=models.CASCADE, related_name='hood')
name = models.CharField(max_length=50)
location = models.CharField(max_length=60)
hood_logo = CloudinaryField('hood_logo', default='default.png')
description = models.TextField()
health_tell = models.IntegerField(null=True, blank=True)
police_number = models.IntegerField(null=True, blank=True)
Count= models.IntegerField(null=True, blank=True)

def __str__(self):
return f'{self.name} hood'

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

  Model sąsiedztwa pokazuje dodany wybór administratora

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.

jak zweryfikować stronę biznesową na Facebooku

Relacje w bazie danych wiele do wielu

W wielu do wielu relacji, wiele rekordów w jednym modelu jest powiązanych z innymi w innym. Na przykład Poczta oraz 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.

class Post(models.Model): 
title = models.CharField(max_length=120, null=True)
post = models.TextField()
date = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(Profile, on_delete=models.CASCADE, related_name='post_owner')
hood = models.ForeignKey(NeighbourHood, on_delete=models.CASCADE, related_name='hood_post')
business = models.ManyToManyField(Business)

def __str__(self):
return f'{self.title} post'

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

  Model postu ma opcję dodania kilku firm

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.