2017-10-17 2 views
1

템플릿에서 데이터를 가져 오는 원리를 이해하는 데 어려움이 있습니다. 쉘에서 어떻게하는지 잘 이해합니다. 하지만 항상 클래스 기반 뷰를 사용하여이를 수행하는 방법을 차단합니다. 나는 간단한보기가 있습니다장고 템플릿에서 데이터 검색

class ProjectDetailView(generic.DetailView, LoginRequiredMixin): 
    #import pdb; pdb.set_trace() 
    model = Project 
    template_name = 'project_details.html' 

그래서 내 템플릿에 내가 쉽게 같은 모델 프로젝트에서 데이터를 검색을 {{project.name}} 또는 {{project.team_id}}

하지만 만약 내 프로젝트에서 다른 모델의 세부 데이터를 표시하고 싶습니다. 어떻게해야합니까? 모든 팀 구성원의 목록을 보여주고 싶습니다. 여기

내 모델입니다 : 템플릿

일반적으로
class Team(models.Model): 
    team_name = models.CharField(max_length=100, default = '') 
    team_hr_admin = models.ForeignKey(MyUser, blank=True, null=True) 
    members = models.ManyToManyField(MyUser, related_name="members") 

    def __str__(self): 
     return self.team_name 


class Project(models.Model): 
    name = models.CharField(max_length=250) 
    team_id = models.ForeignKey(Team, blank=True, null=True) 
    project_hr_admin = models.ForeignKey('registration.MyUser', blank=True, null=True) 
    candidat_answers = models.ManyToManyField('survey.response') 
+0

모델 프로젝트의 특정 객체를 상황에 맞게 전달해야합니다. 당신이 팀 모델 – MohitC

답변

1

당신이하지 않는 쿼리; 클래스 또는 함수 기반 뷰인지 여부에 관계없이 뷰에서 수행 할 수 있습니다. 하여 컨텍스트에 추가 할 수있는 방법으로 연결되지

Team: {{ project.team_id.name }} 
Members: 
{% for member in project.team_id.members.all %} 
    {{ member.name }} 
{% endfor %} 

데이터 : 데이터가 관계를 통해 연결되어 있기 때문에이 특별한 경우

하지만, 당신은 템플릿에서 그 관계를 따를 수 있습니다 보기에서 get_context_data 메서드를 재정의합니다.

+1

에 대해 할 수있는 것과 같은 방식 모델이 링크라면 나는 단지 관계를 따르고 그것이 링크되어 있지 않다면 get_context_data를 사용하여 그것을 추출하고 문맥에 넣는다. 좋아, 네가있어;) – Ben2pop

0

이 같은, 당신의 컨텍스트에 추가 데이터를 추가해야합니다 :

class ProjectDetailView(generic.DetailView, LoginRequiredMixin): 
    model = Project 
    template_name = 'project_details.html' 

    def get_context_data(self, **kwargs): 
     # Call the base implementation first to get a context 
     context = super(ProjectDetailView, self).get_context_data(**kwargs) 
     # Add in a QuerySet of all the team members 
     context['members'] = self.get_object().team_id.members.all() 
     return context 

그런 다음 템플릿에이처럼 보여줄 수있을 것입니다 :

{% for member in members %} 
    {{ member.name }} # or any other attribute 
{% endfor %} 

는 희망이 도움이!

관련 문제