인프런 커뮤니티 질문&답변

bigseoul님의 프로필 이미지
bigseoul

작성한 질문수

실리콘밸리 엔지니어가 가르치는 파이썬 장고 웹프로그래밍

Http method(메서드)와 Django Form에 대한 소개

detail.html에서 choice를 뿌려주는 데, 어느 부분에서 Choice객체가 Question객체에 의존하는지 모르겠어요.

해결된 질문

작성

·

217

1

 

{% for choice in question.choice_set.all %}
            <input type="radio" name="choice" id="choice{{ forloop.counter }}" value="{{ choice.id }}">
            <label for="choice{{ forloop.counter }}">{{ choice.choice_text }}</label><br>
{% endfor %}

detail.html에서

question.choice_set.all 로 각 choice를 li로 뿌려주는데

어는 부분에서 Question 객체가 Choice객체를 의존하게 되는지 모르겠어요.

model안에 있는

class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)

이 부분인가요?

언뜻 Question 객체에서 question이란 객체변수로 Choice 객체를 받아줘야 할 것 같은데 말이죠.

그래야, question.choice라는 식으로 접근할 수 있을테니까요? 여기는 Choice객체 안이라서 좀 햇갈립니다. ㅎ

아니면 저렇게 ForeignKey를 설정하면, 내부적으로 Question객체에 Choice객체가 의존하게 되나요?

잘 몰라서 이상한 질문 드리는 것 같네요 ㅎ

답변 1

1

미쿡엔지니어님의 프로필 이미지
미쿡엔지니어
지식공유자

안녕하세요 bigseoul님,

그 부분은 혼란될 수 있을 것 같은데, 장고 내부에서 backward relationship을 자동적으로 지원하기 때문에, <model>_set으로 자신을 가리키는 모델을 불러올 수 있습니다.

예제를 보시면 말씀하셨던 것과 같이 Choice가 Question을 가리키고 있는데, Question 입장에서는 자신을 가리키고 있는 모든 엔트리를 choice_set으로 불러올 수 있습니다.

제가 잘 이해했는지는 모르겠지만, Bigseoul님이 말씀하신 것도 지원을 합니다.

choice.question.id식으로도 접근이 가능합니다(여기서 choice는 하나의 오브젝트구요)

자세한 공식 내용은 https://docs.djangoproject.com/en/4.0/topics/db/queries/#following-relationships-backward 있습니다.

 

그럼 도움이 되었길 바랍니다.

bigseoul님의 프로필 이미지
bigseoul

작성한 질문수

질문하기