簡體   English   中英

Django與多種模型建立關聯

[英]Django Get Related with Multiple Models

嗨,我是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 %}

這是我的網址信息中心/候選人/ pk /。

發生的是在模板中加載了所有用戶照片,而不是僅加載了我想要的特定用戶。 我嘗試使用{{候選人.user.candidatephotos_set.photo.url}}來獲取用戶照片,但是它不起作用。

我也嘗試過將views.py模型從“ Candidate”更改為“ CandidateToJob”(直通模型),但是出現404錯誤,我不知道為什么。

那么,實現此目標的最佳實踐是什么?

根本不需要在視圖中查詢CandidatePhotos。 您的候選對象已經通過用戶具有相關關系,因此您可以簡單地遵循以下要求:

{% for photo in object.user.candidatephotos_set.all %}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM