在django中过滤外键

Filtering on foreign key in django

在django中,为什么不允许:

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

但它确实允许:

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

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

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

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

id 字段仅在您未指定主键时出现。 Django 适应了我提供的这个 pk,它是你的主键

的任何字段的代理