Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django与多个模型相关_Python_Django_Filtering_Models_Django Select Related - Fatal编程技术网

Python Django与多个模型相关

Python Django与多个模型相关,python,django,filtering,models,django-select-related,Python,Django,Filtering,Models,Django Select Related,嗨,我是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.Foreign

嗨,我是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 %}
{{candidate.user.first_name}{{{candidate.user.last_name}
{cand_照片中候选照片的百分比%}
{%endfor%}
这是我的url dashboard/candidate/pk/

发生的事情是在模板中加载所有用户的照片,而不是只加载我想要的特定用户。 我曾尝试使用{{candidate.user.candidatephotos_set.photo.url}获取用户照片,但没有成功

我还尝试将views.py模型从“Candidate”更改为“CandidateToJob”(直通模型),但我得到了404错误,我不知道为什么


那么,实现这一点的最佳实践是什么呢?

根本不需要在视图中查询候选照片。您的候选对象已经通过用户建立了相关关系,因此您可以简单地遵循以下步骤:

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

嗨,丹尼尔,谢谢,但这不起作用。也许是因为我忘了提到我是以“公司用户”的身份登录的。所以我登录的用户没有照片。在这个应用程序中,我有两种类型的用户:公司用户和候选用户。哦,很抱歉,我使用:{%for candidatephotos In object.user.candidatephotos_set.all%}Kudos来实现它。