代码之家  ›  专栏  ›  技术社区  ›  There

在Django查询集API中__exact的用途是什么?

  •  0
  • There  · 技术社区  · 3 年前

    使用的目的是什么 __exact 在Django查询集API中?

    例如

    >>> Library.objects.filter(id = 15942)
    <QuerySet [<Library: bee>]>
    >>> Library.objects.filter(id__exact = 15942)
    <QuerySet [<Library: bee>]>
    

    >>> Library.objects.filter(title = 'bee')
    <QuerySet [<Library: bee>]>
    >>> Library.objects.filter(title__exact = 'bee')
    <QuerySet [<Library: bee>]>
    

    注意到这显然与案件敏感性无关:

    >>> Library.objects.filter(title = 'Bee')
    <QuerySet []>
    >>> Library.objects.filter(title__exact = 'Bee')
    <QuerySet []>
    
    2 回复  |  直到 3 年前
        1
  •  1
  •   Thomas Vivier    3 年前

    从…起 https://docs.djangoproject.com/en/3.2/ref/models/querysets/

    准确的

    完全匹配。如果为比较提供的值为None,它将被解释为SQL NULL(有关更多详细信息,请参阅isull)。

    Entry.objects.get(id__exact=14)
    Entry.objects.get(id__exact=None)
    

    SQL等效项:

    SELECT ... WHERE id = 14;
    SELECT ... WHERE id IS NULL;
    
        2
  •  0
  •   There    3 年前

    显然地 __exact 始终存在:

    为了方便起见,当没有提供查找类型时(如在Entry.objects.get(id=14)中),假设查找类型是精确的。

    来源 https://docs.djangoproject.com/en/3.2/ref/models/querysets/#field-lookups