0

こんにちは、私は Django が初めてで、スルー モデルで関連オブジェクトを取得していません。

私のコード:

#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)

私が持っている見解では

#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

私が持っているテンプレート:

 #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 %}

問題は、候補者に関連するステータスを特定のジョブに取得できないことです。どうすれば入手できますか?

ページ全体をリロードせずにこのステータスを更新する最良の方法は何ですか?

前もって感謝します

4

1 に答える 1

0

ああ、次を使用して候補者のステータスを取得できます。

 {% for candidate in object.applied_to.all %}
     {{ candidate.get_status_display }}
 {% endfor %}
于 2014-10-26T12:48:12.127 に答える