0
Привет Я новичок в Django, и я не получаю связанный объект в сквозной модели.Получить связанное поле m2m 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 %}
Дело в том, я не в состоянии получить статус связанные с кандидатом на конкретную работу. Как я могу его получить?
А как лучше всего обновить этот статус без перезагрузки всей страницы?
Заранее спасибо
Если вы хотите получить доступ к экземпляру модели в шаблоне - имя по умолчанию, которое обеспечивает DetailView является 'object' , Поэтому вместо 'job.candidatetojob_set.all' try' object.candidatetojob_set.all' – madzohan
И лучший способ обновить статус без перезагрузки всей страницы - использовать AJAX (отправить обновленные данные и объект pk в некоторый вид и сохранить там) – madzohan
Спасибо. Можете ли вы привести пример того, как выполнить обновление ajax? –