2014-10-25 5 views
0

안녕하세요 저는 장고에서 새로 왔으며 관통 모델에서 관련 객체를 가져 오지 못했습니다.관련 필드 가져 오기 m2m django

내 코드 : 나는

#views.py 
class Screening(generic.DetailView): 
    model = Job 
    template_name = 'dashboard/screening.html' 

    def get_context_data(self, **kwargs): 
     context = super(Screening, self).get_context_data(**kwargs) 
     context['candidate_list'] = self.object.candidate.select_related().annotate 
     return context 

이있는 뷰 템플릿 내가 가지고에서

#models.py 
class Candidate(models.Model): 
    user = models.OneToOneField(User, primary_key=True) 
    birth = models.CharField(max_length=50) 
    ... 

class Job(models.Model): 
    candidate = models.ManyToManyField('Candidate', through='CandidateToJob') 
    title = models.CharField(max_length=500) 
    ... 

class CandidateToJob(models.Model): 
    job = models.ForeignKey(Job, related_name='applied_to') 
    candidate = models.ForeignKey(Candidate, related_name='from_user') 
    STATUS_CHOICES = (
     ('1', 'Not approved'), 
     ('2', 'Approved'), 
     ('3', 'Hired') 
    ) 
    status = models.CharField(max_length=2, choices=STATUS_CHOICES) 

:

#url.py 
url(r'^dashboard/job/(?P<pk>\d+)/screening/$', views.Screening.as_view(), name='screening'), 

#HTML 
{% for candidate in candidate_list %} 

    {{ candidate.user.get_full_name }} #this works 

    {% for candidatetojob in job.candidatetojob_set.all %} 
      {{ candidatetojob.get_status_display }} 
    {% endfor %} 

{% endfor %} 

것은 내가 상태를 얻을 수 없다는하고있다 특정 직업에 대한 후보자와 관련이있다. 어떻게받을 수 있습니까?

그리고 전체 페이지를 다시로드하지 않고이 상태를 업데이트하는 가장 좋은 방법은 무엇입니까? 사전에

감사

+0

을 당신이 당신의 템플릿에 모델 인스턴스에 액세스하려면 - DetailView가 제공하는 기본 이름은'object'입니다 . 그래서 대신'job.candidetetojob_set.all' 시도'object.candidatooobobset.all' – madzohan

+0

그리고 가장 좋은 방법은 전체 페이지를 다시로드하지 않고 상태를 업데이트하는 것입니다 - AJAX를 사용하십시오 (업데이트 된 데이터와 객체 pk를 어떤보기로 보내고 거기에 저장하십시오). – madzohan

+0

고마워요. ajax 업데이트를 수행하는 방법에 대한 몇 가지 예를 제공 할 수 있습니까? –

답변

0

아, 내가 사용하여 후보 상태를 검색 할 수 있습니다 :

{% for candidate in object.applied_to.all %} 
    {{ candidate.get_status_display }} 
{% endfor %} 
관련 문제