在一个QuerySet过滤空或空的名字

我有名字,姓氏和别名(可选),我需要寻找。 所以,我需要一个查询给我的一切,有一个别名集的名称。

只有我可以这样做:

Name.objects.filter(alias!="")

那么,什么是相当于上面?

--------------解决方案-------------

你可以这样做:

Name.objects.exclude(alias__isnull=True)

如果您需要排除空值和空字符串 ,首选的方法,这样做是连锁在一起,像这样的情况:

Name.objects.exclude(alias__isnull=True).exclude(alias__exact='')

链接这些方法基本上一起检查每个条件独立:在上面的例子中,我们排除行,其中aliasnull或空字符串,所以你得到所有Name具有没有空,没有空的对象alias域。 生成的SQL看起来是这样的:

SELECT * FROM Name WHERE alias IS NOT NULL AND alias != ""

您还可以将多个参数传递给一个单一的呼叫exclude ,这将确保满足每一个条件得到排除,只有对象:

Name.objects.exclude(some_field=True, other_field=True)

在这里,排在some_field other_field是真正的得到排除,所以我们得到其中两个领域都不是真正的所有行。 生成的SQL代码看起来有点像这样:

SELECT * FROM Name WHERE NOT (some_field = TRUE AND other_field = TRUE)

另外,如果你的逻辑是比这更复杂,你可以做这样的事情,虽然我只推荐它作为最后的手段:

from django.db.models import Q
Name.objects.exclude(Q(alias__isnull=True) | Q(alias__exact=''))

欲了解更多信息请参阅本页面,此页面中的Django文档。

顺便说一句:我的SQL的例子只是一个比喻-实际生成的SQL代码可能会有所不同。 你会得到的Django的查询是如何工作的通过实际观察它们生成的SQL更深入的了解。

首先,Django文档强烈建议不要使用空值基于字符串的领域,如CharField或文本字段。 阅读说明文档:

https://docs.djangoproject.com/en/dev/ref/models/fields/#null

解决方案:你也可以连接在一起的查询集的方法,我想。 尝试这个:

Name.objects.exclude(alias__isnull=True).exclude(alias="")

这应该给你你正在寻找的集合。

Name.objects.filter(alias__gt='',alias__isnull=False)

分类:Django的 时间:2012-01-01 人气:1
分享到:

相关文章

  • Django的:如何合并在Django 0.96两个相关的查询集? 2014-06-17

    我想与合并相关对象的另一个查询集相关对象的一种查询集. 一些示例代码解释: ## Models # sample models to illustrate problem class PetShop(models.Model): id = models.AutoField(primary_key=True) shop_name = models.CharField(maxlength=255) cats = models.ManyToManyField(Cat) class Cat(models

  • Django的 - 检查多表的传承查询集的类型 2014-07-17

    我试图保持一种目录结构的表在我的数据库. 简单的例子: models.py class Section (models.Model): title = models.CharField(max_length=80) order = models.IntegerField() class SectionClickable(Section): link = models.CharField(max_length=80) class SectionHeading(Section): backgroun

  • Django的分页对象与PostgreSQL的查询集问题 2014-08-18

    我有一个运行在SQLite数据库或MySQL数据库细一些Django的代码,但它运行与Postgres的问题,它让我疯了,没有人之前就这一问题. 我想这可能也与查询集是由寻呼机评估的方式. 在视图中我有: def index(request, page=1): latest_posts = Post.objects.all().order_by('-pub_date') paginator = Paginator(latest_posts, 5) try: posts = paginator.p

  • Django的分页上不断变化的查询集 2015-03-10

    在我的网页一个我想显示的对象的排序列表的一个子集. 相关对象的整个列表是极长的,并具有在用户查看的网页的变化的好机会. 我不介意的页面是不是最新的,但我确实需要确保当用户进入下一个页面,用户将看到下个对象从原来的排序列表. 因此,由于可能发生更改的数据,使用内置分页或去"下一页"时,像Django的无端分页非常好的库将不会返回正确的结果Django的. 为了让我的意思的例子,假设我们有对象[1,2,3,4,5,6,7,8,9,10,11,12],并想显示5每页排序从小到大. 第一页将如

  • Django的调用保存的QuerySet对象 - “查询集'对象有没有属性'救' 2014-07-03

    我怎么会得到下面的工作? player = Player.objects.get(pk=player_id) game = Game.objects.get(pk=game_id) game_participant = GameParticipant.objects.filter(player=player, game=game) game_participant.save() 我当物体在datbase已经存在,然后我得到: "查询集'对象有没有属性"保存". 在我的模型来看

  • Django的CheckboxSelectMultiple部件增加了-------值查询集 2012-01-27

    我有这样的字段格式: categories = forms.ModelChoiceField( queryset=Field.objects.all(), widget=CheckboxSelectMultiple, required=False ) 而渲染后,我得到我的第一个值,如下所示: <ul> <li> <label for="id_categories_0"><input type="checkbox" name=

  • Django的ModelMultipleChoiceField领域从它的查询集展示 2013-07-03

    我有一个ModelMultipleChoiceField一个的ModelForm. users = forms.ModelMultipleChoiceField( widget=forms.SelectMultiple(attrs={'class': 'chzn-select'}), queryset = User.objects.filter(...)) 我的名单是由用户名显示,为默认的repr模型的方法. 我想要显示的first_name和last_name载的情况下repr的方法,因为我需

  • Django的,传递信息的ModelForm修改查询集时 2013-09-06

    数据库:文件有许多断面中,有许多评论 在每个文档页面,有一个评论表单,让您挑选部分(使用ModelChoiceField). 问题是,ModelChoiceField将包含所有文件的所有部分. 因此,要限制他们,我这样做: class CommentForm(ModelForm): def __init__(self, *args, **kwargs): super(CommentForm, self).__init__(*args, **kwargs) if self.instance: lo

  • Django管理直列形式 - 限外键查询集到一组值 2014-12-07

    我有一些需要一个管理页面上共存,互相关联的模型. 这里的想法: 戏剧作品有剧组成员,和剧组成员都指定角色. 一个剧院生产是关系到一个给定的书面文本(播放,改编等),和书面文本保存为文本中的所有角色的列表. 在添加生产,每一个剧组成员需要与这些角色中的一个相关联. 这里的数据模型是如何工作的: 型号:生产,人的castmember,角色,WrittenText 关系:生产和个人必须通过的castmember的M2M的关系,增加了一个"角色"场 - 一个ForeignKey的一个角色对象.

  • 从过滤器PARAMS获取查询集 2014-06-10

    我需要在此基础上会有字段名称和值我的URL request.GET中筛选查询集. 我的模型: class AnimalType(Basemodel): name = models.CharField() type = models.ForeignKey(Type) class SubAnimalType(Basemodel): name = models.CharField() animaltype = models.ForeignKey(AnimalType) class Location(B

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.371 (s). 10 q(s)