在Django中过滤外键

时间:2018-11-28 20:56:10

标签: python django

在django中,为什么不允许:

ItemInstance.objects.filter(provider_id__icontains='sting'))

但是它确实允许:

ItemInstance.objects.filter(provider__name__icontains='sting'))

provider_idprovider__name的值相同,因为外键是name字段。为什么它不允许第一种引用它的方法?

1 个答案:

答案 0 :(得分:2)

我怀疑您使用自然键作为主键:名称字段上有primary=True吗?如果是这样,请使用此

ItemInstance.objects.filter(provider_pk__icontains='sting'))

id字段仅在未指定主键的情况下存在。 Django容纳了我提供的pk,它是任何字段作为您的主键的代理