Django에서 일대 다 관계 표현

Vaibhav Vaibhav 2023년1월30일
  1. 접합 / 중개 모델을 사용하여 일대 다 관계 표현
  2. 외래 키를 사용하여 일대 다 관계 표현
Django에서 일대 다 관계 표현

데이터베이스는 거의 모든 곳에서 중요한 역할을하며 웹 개발이 그러한 장소 중 하나라는 것은 놀라운 일이 아닙니다. SQL을 사용하여 테이블을 만들고 테이블 간의 관계를 설정하는 것은 간단한 작업이지만 Django는 훨씬 더 간단합니다.

이 기사에서는 Django에서 일대 다 관계를 표현하는 방법을 소개합니다.

접합 / 중개 모델을 사용하여 일대 다 관계 표현

다음 모델의 정의를 참조하십시오.

class Number(models.Model):
    number = models.CharField(max_length=10)


class Person(models.Model):
    name = models.CharField(max_length=200)


class PersonNumber(models.Model):
    person = models.ForeignKey(Person, on_delete=models.CASCADE, related_name="numbers")
    number = models.ForeignKey(Number, on_delete=models.CASCADE, related_name="person")

Number모델에는 전화 번호를 저장하기위한number필드가 있습니다.

Person모델에는 그 사람의 이름을위한name필드가 있습니다.

PersonNumberNumberPerson의 접합 또는 중개 모델입니다. 외래 키는 참조 된 개체와 계단식 관계를 갖습니다. 이 모델은 다 대다 관계뿐만 아니라 일대 다 관계를 설정하는 데 사용할 수 있습니다.

모든 모델의 기본 기본 키는 정수 자동 필드 인id입니다.

전화 번호는 한 사람과 만 연관되지만 한 사람이 두 개 이상의 전화 번호를 가질 수 있기 때문에 이것은 일대 다 관계입니다. PersonNumber는이 관계를 나타내는 데 사용됩니다.

변수personPerson개체를 저장하는 경우 다음 문을 사용하여이 사람의 모든 전화 번호에 쉽게 액세스 할 수 있습니다.

numbers = person.numbers.objects.all()

이 명령문은Number오브젝트의QuerySet를 리턴합니다.

이 예를 고려하십시오.

ID Person Number
1 1 1
2 1 2
3 1 3
4 1 4
5 2 5
6 2 6
7 3 7

id 1을 가진 사람은id 1,2,34가있는 네 개의 전화 번호를 가지고 있습니다.
id``2를 가진 사람은id 56이있는 두 개의 전화 번호를 가지고 있습니다.
id 3을 가진 사람은id 7이있는 전화 번호가 하나만 있습니다.

외래 키를 사용하여 일대 다 관계 표현

다음 모델의 정의를 참조하십시오.

class Person(models.Model):
    name = models.CharField(max_length=200)


class Number(models.Model):
    person = models.ForeignKey(Person, on_delete=models.CASCADE)
    number = models.CharField(max_length=10)

Person모델에는 그 사람의 이름을위한name필드가 있습니다.

Number모델에는 전화 번호를 저장하는number필드와Person모델에 대한 외래 키 참조가 있습니다. 이 필드는이 번호의 소유자를 저장합니다. 외래 키는 참조 된 모델Person과 계단식 관계를 갖습니다.

이 구조를 사용하면 외래 키 참조를 사용하여 각Number개체를 해당 소유자와 쉽게 연결할 수 있습니다.

변수personPerson개체를 저장하는 경우 다음 문을 사용하여이 사람과 관련된 모든 번호에 액세스 할 수 있습니다.

numbers = Number.objects.filter(person=person)

이 명령문은Number오브젝트의QuerySet를 리턴합니다.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.