嗨,我是 Django 新手,不知道如何使用多个模型获取相关对象。
我的代码:
#models.py
class Candidate(models.Model):
user = models.OneToOneField(User, primary_key=True)
birth = models.CharField(max_length=50)
...
class CandidatePhotos(models.Model):
user = models.ForeignKey(User)
photo = models.ImageField(upload_to='usergallery/%Y/%m/%d')
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 CandidateDetails(generic.DetailView):
model = Candidate
template_name = 'dashboard/candidate.html'
def get_context_data(self, **kwargs):
context = super(CandidateDetails, self).get_context_data(**kwargs)
context['cand_photos'] = CandidatePhotos.objects.all()
return context
在我的模板中
<h2>{{ candidate.user.first_name }} {{ candidate.user.last_name }}</h2>
{% for candidatephotos in cand_photos %}
<img alt="" src="{{ candidatephotos.photo.url }}" >
{% endfor %}
这是我的 url 仪表板/候选人/pk/。
发生的事情是在模板中加载所有用户的照片,而不仅仅是我想要的特定用户。我尝试使用 {{ Candidate.user.candidatephotos_set.photo.url }} 获取用户照片,但它不起作用。
我还尝试在views.py 中将模型从“Candidate”更改为“CandidateToJob”(通过模型),但出现404 错误,我不知道为什么。
那么,实现这一目标的最佳实践是什么?