Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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 有没有办法从QuerySet获取外键实例?_Python_Django_Psql - Fatal编程技术网

Python 有没有办法从QuerySet获取外键实例?

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

我试图获取存储在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=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
-a
ForeignKey
字段的值是相关的模型实例(因此此处为
candidates
实例),不是它的id。ORM将负责将其转换为数据库模式级别的
候选\u id
外键。