Есть ли способ получить экземпляр внешнего ключа из QuerySet? - PullRequest
0 голосов
/ 09 июля 2019

Я пытаюсь получить экземпляр внешнего ключа, хранящийся в модели CandidateSkill (в [5]), но хочу избежать использования цикла.

Я пытался values(), он возвращает только фактическую candidate_id(int), сохраненную в Кандидат модель, а не экземпляр.

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)

Джанго Шелл

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>

Так что у меня есть способ получить только экземпляр внешнего ключа и избежать использования цикла.

1 Ответ

2 голосов
/ 09 июля 2019

Если я правильно понимаю ваш вопрос, вы хотите получить всех кандидатов, имеющих навык CandidateSkill, содержащий строку «py»?Это должно получить то, что вы хотите

Candidate.objects.filter(candidateskill__skill__icontains='py')
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...