django manytomani 관계
5291 단어 djangomanytomany다 대 다 관계
Django 의 다 중 관 계 는 Many ToMany Field 필드 유형 을 통 해 이 루어 집 니 다. 공식 문서 의 예 는 다음 과 같 습 니 다. 아래 모델 에서 Pizza 와 Topping 은 다 중 관계 입 니 다.
- class Topping(models.Model):
- title=models.CharField(max_length=30)
- class Pizza(models.Model):
- title=models.CharField(max_length=30)
- toppings=models.ManyToManyField(Topping)
다음은 토 핑 과 피 자 를 각각 추가 하 겠 습 니 다.
- topping=Topping(title='test_title')
- topping.save()
- pizza=Pizza(title='test_title')
- pizza.save()
그러나 이 는 토 핑 과 피 자 를 각각 추가 할 수 있 지만 이들 사이 에는 관련 이 없다.다음 세상 둘 의 관계.
- #
- pizza.toppings.add(topping)
- #
- topping.pizza_set.remove(pizza)
아래 와 같이 사용:
- # topping pizza
- topping.pizza_set.all()
- # pizza topping
- pizza.toppings.all()
template 에서 다음 과 같이 인쇄 합 니 다:
- {\% for topping in pizza.toppings.all %\}
- {\% endfor %\}
WordPress 의 글 과 태그 의 다 대 다 관 계 를 생각해 보면 쉽게 이 루어 질 수 있 습 니 다.
한 장의 표 에서 외 키 가 같은 표를 가리 키 는 필드 수가 2 보다 많 을 때 구분 하기 위해 related 를 사용 해 야 합 니 다.name, 예 를 들 면:
- class Pizza(models.Model):
- title=models.CharField(max_length=30)
- toppings1=models.ManyToManyField(Topping,related_name="toppings1")
- toppings2=models.ManyToManyField(Topping,related_name="toppings2")
relatedname 후 "set "와 같은 검색 은 relatedname 이 대체 되 었 기 때문에 더 이상 set 를 사용 할 수 없습니다.
또 하나의 방법 은 Many ToMany Field 필드 의 through 매개 변 수 를 제정 하여 중개 모델 을 정의 하고 이들 의 관 계 를 위해 중개 class 를 새로 만 드 는 것 입 니 다. 데이터 베이스 에 두 사람의 id 를 저장 합 니 다.
- class Topping(models.Model):
- title=models.CharField(max_length=30)
- class Pizza(models.Model):
- title=models.CharField(max_length=30)
- toppings=models.ManyToManyField(Topping,through='relation',
- related_name='toppings')
- #
- class Relation(models.Model):
- topping=models.ForeignKey(Topping)
- pizza=models.ForeignKey(Pizza)
이렇게 하면 아래 의 방식 으로 양자 관 계 를 저장 할 수 있다.
- relation=Relation(topping=topping,pizza=pizza)
- relation.save()
다른 사용 은 위 와 마찬가지 로 실제 개발 은 두 번 째 방식 을 사용 하 는 것 이 비교적 뚜렷 하지만 더 많은 데이터 베이스 조회 작업 을 하여 효율 에 영향 을 줄 수 있다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Django의 질문 및 답변 웹사이트환영 친구, 이것은 우리의 새로운 블로그입니다. 이 블로그에서는 , 과 같은 Question-n-Answer 웹사이트를 만들고 있습니다. 이 웹사이트는 회원가입 및 로그인이 가능합니다. 로그인 후 사용자는 사용자의 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.