在django中过滤外键
Filtering on foreign key in django
在django中,为什么不允许:
ItemInstance.objects.filter(provider_id__icontains='sting'))
但它确实允许:
ItemInstance.objects.filter(provider__name__icontains='sting'))
provider_id
和 provider__name
会给出相同的值,因为外键是 name
字段。为什么它不允许引用它的第一种方法?
我怀疑您使用的是自然键作为主键:名称字段上有 primary=True
?如果是这样使用这个:
ItemInstance.objects.filter(provider_pk__icontains='sting'))
id
字段仅在您未指定主键时出现。 Django 适应了我提供的这个 pk
,它是你的主键
的任何字段的代理
在django中,为什么不允许:
ItemInstance.objects.filter(provider_id__icontains='sting'))
但它确实允许:
ItemInstance.objects.filter(provider__name__icontains='sting'))
provider_id
和 provider__name
会给出相同的值,因为外键是 name
字段。为什么它不允许引用它的第一种方法?
我怀疑您使用的是自然键作为主键:名称字段上有 primary=True
?如果是这样使用这个:
ItemInstance.objects.filter(provider_pk__icontains='sting'))
id
字段仅在您未指定主键时出现。 Django 适应了我提供的这个 pk
,它是你的主键