Python 有没有办法从QuerySet获取外键实例?
我试图获取存储在CandidateSkill模型(在[5]中)中的外键实例,但希望避免使用循环 我尝试了Python 有没有办法从QuerySet获取外键实例?,python,django,psql,Python,Django,Psql,我试图获取存储在CandidateSkill模型(在[5]中)中的外键实例,但希望避免使用循环 我尝试了values()它只返回存储在candidate模型中的实际candidate\u id(int),而不返回实例 models.py 班级候选人(models.Model): 候选\u id=models.AutoField(主键=True) name=models.CharField(最大长度=255,null=False) 类别候选技能(models.Model): 候选对象\u id=m
values()
它只返回存储在candidate模型中的实际candidate\u id(int)
,而不返回实例
models.py
班级候选人(models.Model):
候选\u id=models.AutoField(主键=True)
name=models.CharField(最大长度=255,null=False)
类别候选技能(models.Model):
候选对象\u id=models.ForeignKey('hr.candidate',on\u delete=models.CASCADE)
skill=models.CharField(最大长度=255)
Django Shell
[1]中的:从hr.models导入候选技能作为CD
在[2]中:a=cds.objects.filter(skill\u icontains='py')
在[3]中:a
出[3]:
In[4]:a[0]
出[4]:
在[5]中:a[0]。候选者\u id
出[5]:
因此,我找到了一种只获取外键实例并避免使用循环的方法。如果我正确理解了您的问题,您想获取所有具有包含字符串“py”的CandidateSkill的候选项吗?这应该是你想要的
Candidate.objects.filter(candidateskill__skill__icontains='py')
不知道我是否理解,但也许吧!。此外,您可以在元类内的候选模型中添加一个
def\uuuu str\uuu
方法,这样您将看到它们的名称,看起来您想要整个实例,但名称将有助于可读性。您所说的循环是什么意思。请详细说明。完全不相关但您的CandidateSkill.candidate\u id
字段应命名为CandidateSkill.candidate
-aForeignKey
字段的值是相关的模型实例(因此此处为candidates
实例),不是它的id。ORM将负责将其转换为数据库模式级别的候选\u id
外键。