django查询过滤和区分

时间:2012-09-04 11:51:23

标签: database django django-models

我有一张表格如下:

table_name:example

values
1
1
2

2
3

3

值列表包含上述值。当我在有能力的表上写一个不同的查询时,我得到1 2 3和一个空的''值。

我想摆脱null值,因为它在我的程序中造成了一些问题。 我写的那个查询是:

example.objects.values_list('values',flat = True).distinct()

有没有办法过滤掉那个空值

4 个答案:

答案 0 :(得分:5)

试试这个:

from django.db.models import Q
example.objects.exclude(
      Q(values__isnull=True)|Q(values='')
    ).values_list('values', flat=True).distinct()

答案 1 :(得分:3)

如上所述,如果您有null / empty string混淆。您可以使用复杂的查找参数排除这两个参数,如:

from django.db.models import Q
example.objects.exclude(Q(values__isnull=True)|Q(values='')).values_list('values',flat = True).distinct()

Complex Lookups are here ...

答案 2 :(得分:0)

您可以先尝试过滤掉空值,然后将过滤器链接起来,如下所示

example.objects.exclude(values=None).values_list('values',flat = True).distinct()

答案 3 :(得分:0)

尝试使用is_null字段查找:

example.objects.filter(values__isnull=False).values_list('values',flat = True).distinct()

因此.values_list(...之前的查询字符串将返回example表中的所有记录,values字段不为空。

正如 @BurhanKhalid 注意到,只有当您的values字段为NULL时,此尝试才有效