有没有办法从 QuerySet 中获取外键实例?
Is there a way to get foreign key instance from the QuerySet?
我试图获取存储在 CandidateSkill 模型(In[5])中的外键实例,但想避免使用循环.
我试过 values()
它只是 return 实际 candidate_id(int)
存储在 Candidate模型而不是实例。
models.py
class Candidate(models.Model):
candidate_id = models.AutoField(primary_key = True)
name = models.CharField(max_length = 255, null = False)
class CandidateSkill(models.Model):
candidate_id = models.ForeignKey('hr.Candidate', on_delete = models.CASCADE)
skill = models.CharField(max_length = 255)
Django Shell
In [1]: from hr.models import CandidateSkill as cds
In [2]: a = cds.objects.filter(skill__icontains = 'py')
In [3]: a
Out[3]: <QuerySet [<CandidateSkill: CandidateSkill object (1)>, <CandidateSkill: CandidateSkill object (2)>, <CandidateSkill: CandidateSkill object (3)>, <CandidateSkill: CandidateSkill object (4)>, <CandidateSkill: CandidateSkill object (10)>]>
In [4]: a[0]
Out[4]: <CandidateSkill: CandidateSkill object (1)>
In [5]: a[0].candidate_id
Out[5]: <Candidate: Clayton Cote>
所以我有办法只获取外键实例并避免使用循环。
如果我对你的问题的理解正确,你想获得所有 CandidateSkill 包含字符串 'py' 的 Candidates?这应该得到你想要的
Candidate.objects.filter(candidateskill__skill__icontains='py')
我试图获取存储在 CandidateSkill 模型(In[5])中的外键实例,但想避免使用循环.
我试过 values()
它只是 return 实际 candidate_id(int)
存储在 Candidate模型而不是实例。
models.py
class Candidate(models.Model):
candidate_id = models.AutoField(primary_key = True)
name = models.CharField(max_length = 255, null = False)
class CandidateSkill(models.Model):
candidate_id = models.ForeignKey('hr.Candidate', on_delete = models.CASCADE)
skill = models.CharField(max_length = 255)
Django Shell
In [1]: from hr.models import CandidateSkill as cds
In [2]: a = cds.objects.filter(skill__icontains = 'py')
In [3]: a
Out[3]: <QuerySet [<CandidateSkill: CandidateSkill object (1)>, <CandidateSkill: CandidateSkill object (2)>, <CandidateSkill: CandidateSkill object (3)>, <CandidateSkill: CandidateSkill object (4)>, <CandidateSkill: CandidateSkill object (10)>]>
In [4]: a[0]
Out[4]: <CandidateSkill: CandidateSkill object (1)>
In [5]: a[0].candidate_id
Out[5]: <Candidate: Clayton Cote>
所以我有办法只获取外键实例并避免使用循环。
如果我对你的问题的理解正确,你想获得所有 CandidateSkill 包含字符串 'py' 的 Candidates?这应该得到你想要的
Candidate.objects.filter(candidateskill__skill__icontains='py')