이 장고 앱 튜토리얼에서 choice_set는 무엇입니까?
p.choice_set.create(choice='Not much', votes=0)
어떻게 있다.choice_set
존재를 불러왔고 그것은 무엇입니까?
내 생각엔choice
부품은 모델의 소문자 버전입니다.Choice
튜토리얼에서 사용되었지만, 무엇이choice_set
자세히 말씀해 주시겠어요?
업데이트: Ben의 답변을 바탕으로 다음 문서를 찾았습니다.관계를 "뒤로" 따르는 것.
다음 날짜에 외부 키를 생성했습니다.Choice
그것은 각각을 a와 연관시킵니다.Question
.
그래서 각각.Choice
을 명시적으로 가지고 있습니다.question
모델에서 선언한 필드입니다.
장고의 ORM은 다음과 같은 관계를 역순으로 따릅니다.Question
또한, 각 인스턴스에서 필드를 자동으로 생성합니다.foo_set
어디에Foo
모델이 다음과 같습니다.ForeignKey
필드를 해당 모델로 이동합니다.
choice_set
이다.RelatedManager
의 쿼리 세트를 만들 수 있습니다.Choice
에 관련된 물체들Question
예를 들어,q.choice_set.all()
만약 당신이 그것을 좋아하지 않는다면.foo_set
Django가 자동으로 선택하는 이름 또는 동일한 모델에 대한 두 개 이상의 외래 키가 있고 그것들을 구별해야 하는 경우, 당신은 다음과 같은 인수를 사용하여 당신 자신의 우선 이름을 선택할 수 있습니다.ForeignKey
.
여기에는 두 가지 중요한 질문이 있습니다.첫 번째: 안녕하십니까?choice_set
존재하게 된두 번째:그것은 무엇일까요?
저와 같은 모든 새로운 개발자들을 위해, 제가 어떻게 그것을 쉽게 만들었는지 설명하겠습니다.두 번째 질문에 먼저 답하겠습니다."뭐지?" 이 세 단어를 통해?모델 인스턴스, 해당 인스턴스와 관련된 개체 집합 Related_manager.
장고 튜토리얼에서 Models.py :
from django.db import models
class Question(models.Model):
question_text = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
class Choice(models.Model):
question = models.ForeignKey(Question, on_delete=models.CASCADE)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
인스턴스:
q = Question.objects.get(pk=3)
# Here q is an instance of model class 'Question'.
c = Choice.objects.get(pk=32)
# Here c is an instance of model class 'Choice'.
'Model Instance' is a single 'ROW' of an entire 'TABLE' of your database
자, 그.Question Model
로 사용됩니다.foreign key
에게Choice Model
따라서 인스턴스 q와 관련된 모든 개체 집합은 다음을 사용하여 필터링할 수 있습니다.
q.choice_set.all()
그러므로,choice_set
여기, pk=3인 질문과 관련된 모든 선택지가 있습니다.
자, 첫 번째 질문에 대한 답은 세 번째 단어 Related Manager가 필요합니다.장고 설명서는 여기에 있습니다.
모델에 ForeignKey가 있는 경우 ForeignKey 모델의 인스턴스는 첫 번째 모델의 모든 인스턴스를 반환하는 Manager에 액세스할 수 있습니다.기본적으로 이 관리자의 이름은 FOO_set입니다. 여기서 FOO는 원본 모델 이름으로 소문자로 표시됩니다.이 관리자는 위의 "개체 검색" 섹션에 설명된 대로 필터링 및 조작할 수 있는 QuerySet을 반환합니다.
이 단어(choice_set)는 Foreign_key의 'related_name' 매개 변수를 사용하여 변경할 수 있습니다.
question = models.ForeignKey(Question, on_delete=models.CASCADE, related_name="choices")
외부 키를 통한 역방향 관계의 경우:
q.choice_set.all()
# If using related_name, then it is same as
q.choices.all()
# All the choices related to the instance q.
전진 관계의 경우:
choice_qs = Choice.objects.all()
choice_qs.filter(question=q)
# Same result as above. All the choices related to instance q.
언급URL : https://stackoverflow.com/questions/2048777/what-is-choice-set-in-this-django-app-tutorial
'programing' 카테고리의 다른 글
T-SQL 스로우 예외 (0) | 2023.07.13 |
---|---|
SQL Server에 저장된 프로시저의 마지막 실행 날짜 (0) | 2023.07.08 |
ASP.NET 5 클래스 라이브러리 프로젝트를 만드는 이유는 무엇입니까? (0) | 2023.07.08 |
판다들은 한 시트에 여러 테이블을 읽습니다. (0) | 2023.07.08 |
VI가 화면에서 커밋 메시지를 기다리고 있을 때 Git 커밋을 중지하려면 어떻게 해야 합니까? (0) | 2023.07.08 |