Рубрики
Без рубрики

Отношения моделей в Джангу

Здравствуйте, Backenders сегодня я решил объяснить OneToone, Manytomany и Internalkey в Джангу Так … с меткой Django, Python, база данных, учебник.

Автор оригинала: Manar Abdelkarim.

Hello Backenders

Сегодня я решил объяснить онон, онемоманы, и внешний ключ в Джангу

Так что давайте начнем:

Почему мы используем отношения?

Первый шаг для понимания отношений – понять, почему мы им нужны. Давайте не будем слишком много говорить о концепции «нормализации», представить, если у нас есть таблица со студентами, гендерными и школьными событиями:

1 321 Натчивы Зоопарк Посещение, благотворительный день Мужчина
2 40 Манар Благотворительный день женский
3 66 Карем Зоопарк посещений, Математическая конкуренция Мужчина

Здесь вы можете заметить, что у каждого студента есть стол, представленный с номером », но почему у нас есть эти данные в этой таблице? Кроме того, «мужчина» в студенческом учете и «4а» в студенческомкладе было повторено дважды в таблице. И худшее в колонке школьников. Просто подумайте, если мы хотим удалить визит зоопарка из продолжающихся событий Natchos, благотворительный день тоже будет удален! Представьте, что если у нас 100 или 1000 студентов!

Вместо этого мы должны разделить стол на меньшие таблицы «Четыре стола в нашем случае»

1 Натчивы
2 Манар
3 Карем
1 Мужчина
2 женский
1
2
1 Зоопарк Посещение
2 Благотворительный день
3 Математическая конкуренция

Идеально. Но что дальше? Нам нужна способ «ссылка», чтобы сообщить базу данных, что этот конкретный студент в этом классе, имеет этот пол и поедет к этим событиям. Это то, что мы делаем с отношениями. Отношения – это ассоциация между двумя объектами.

Внешний ключ:

Я начал с Инонневрей, потому что это самое проще всего понять.

Инострукцию в Джанго представляет «Один со многими» Также называется «Многие до одного» Отношения в базе данных. Это то же самое, что и его имя одно для многих! У меня есть одна мама, и у моей матери есть много детей. В стране много городов, и каждый город расположен в одной стране. В нашем примере выше, каждый студент «нормально» должен иметь один пол. И каждый пол для многих студентов. Начос и Карим – это два ученика «Многие», мужчина один.

Представлять внешний ключ в Джангу:

Потому что мы не можем представлять все «много» в таблице «один». Это имеет много смысла представлять собой возникающую рентацию от многих сторон .. что означает в нашем примере, мы не можем пойти в гендерную таблицу, добавьте ряд и скажут в нем: у нас есть отношения с Natchos, и Kareem и John и Tom ..Tc в мужской ряду «запись» .. вместо этого мы можем добавить ряд в студентах и под названием пола, который говорит этих студентов отношения с гендерным столом в «самцах» или в «самке».

Теперь для представления внешний ключ добавит его в студенческую область с одним основным параметром: ссылаясь на модель, имеющих иностранные ключевые отношения «многие до единицы».

from django.db import models

class StudentGender(models.Model):
    gender = models.CharField(max_length=10)
class Student(models.Model):
    name = models.CharField(max_length=30)
    gender = models.ForeignKey(StudentGender, 
   null=True)

Уведомление в студенте класса:

gender = models.ForeignKey(Gender, 
   on_delete=models.CASCADE)

Что в Django мы не ссылаемся на идентификатор другой модели, но для самой модели «класс» (в других рамках, таких как колба, мы ссылаемся на ID другой модели). Кроме того, мы использовали нуль, чтобы мы могли иметь некоторые студенты без учета пола.

Один к одному

один на один так просто, как вы можете подумать. Эта ручка моя, и эта ручка имеет один владелец. У меня есть один муж, и у моего мужа одна жена. В нашем примере каждый студенческий настроен на один стол и каждый стол для одного студента «хотя бы в моей стране»

Представляют OneToone в Джангу:

На данный момент и потому, что мы собираемся добавить одно значение в любой таблице, это не имеет значения, где мы его добавляем. Но потому что я думаю, что это хорошая идея, чтобы добавить в таблицу стула, так как студент является главным героем, я добавлю поле OneToone к стулу:

class StudentGender(models.Model):
    gender = models.CharField(max_length=10)
    Student = models.OneToOneField(Student, 
   null=True)
class Student(models.Model):
    name = models.CharField(max_length=30)
    gender = models.ForeignKey(StudentGender, 
   null=True)

Notice in class Student :

gender = models.ForeignKey(StudentGender, 
   null=True)

Обратите внимание, что здесь я также использовал «потому что, как вы знаете, если у стула нет студента, чтобы настроить, нам не нужно бросать его из окна.

Студенты зачислены на многих курсах, и каждый курс зачислен многими учениками. В нашем примере каждый студент может посетить много событий, и каждое событие примут участие многим ученикам. Это просто то, что много для многих отношений.

Представляют Мнозкий в Джангу:

В зарубежном ключе мы выбираем «один» стол и в один к одному мы выбрали один из них. Так какой стол мы можем выбрать во многих многих? В нормальных случаях мы создаем третью таблицу «больше похоже на третье колесо в отношениях», имеющих идентификатор первой таблицы и идентификатор второй таблицы, как показано ниже:

Но!

Но!

Но!

Джанго облегчил нам. Это так же просто, как добавление Manytoone или Internalkey! снова Я не выберу студент.

class Student(models.Model):
    name = models.CharField(max_length=30)
    gender = models.ForeignKey(StudentGender, 
   null=True)

class Chair(models.Model):

chair_number = models.IntegerField()
student = models.ManyToManyField('student')

Здесь, кажется, мы достигли конца. Счастливый день тебе и с днем рождения мне 🎂

Использованная литература:

Оригинал: “https://dev.to/manarabdelkarim/models-relationship-in-django-1c93”