【问题标题】:Boolean query in DjangoDjango中的布尔查询
【发布时间】:2013-04-17 14:32:49
【问题描述】:

当我这样做时,我有一个“工作”对象

   jobs=Job.objects.exclude(end_time__lte =datetime.now(), isActive=True)

   jobs.filter( isActive=True)

isAvtive 查询根本不起作用。可能是什么问题?我使用 MySQL,在作业表中 True 注册为 1 ,Fakse 注册为 0 ,以及 Job 模型:

class Job(models.Model):
title=models.CharField(max_length=40)
genre=models.ManyToManyField(JobGenre)  
location=models.TextField()
start_time=models.DateTimeField()             
end_time=models.DateTimeField()
description=models.TextField()
reward=models.TextField(null=True)
isActive=models.BooleanField(default=True)


def __unicode__(self):
    return self.title

class meta:
    ordering=['-end_time','creator']

【问题讨论】:

  • 为什么你认为它不起作用?它应该可以工作,在其他地方寻找问题。也看看这个问题:stackoverflow.com/questions/2221247/…
  • 它在 "isActive" 中显示带有 false 和 true 值的 resluset
  • 你的Job 模型是什么样的?

标签: python sql django


【解决方案1】:

尚不清楚您要达到的目标。如果您想要isActiveTRUE 的所有记录,那么...

jobs = Job.objects.filter(isActive=True)

...应该可以。如果您想排除所有isActiveTRUE 的记录,那么您需要...

jobs = Job.objects.filter(isActive=False)

这两个中的一个应该返回一些结果,除非您的数据库表中没有数据。

【讨论】:

  • 这次什么都没有返回 :(
  • @hln 那么数据库中可能没有isActiveTRUE 的记录。在您的问题中包含 Django Job 模型的代码以及该数据库表的一小部分数据样本可能会有所帮助。
  • 作业对象有真假,
  • @hln 你确定 Django 正在连接到正确的数据库吗?如果你要进行单元测试,Django 会创建一个没有内容的临时数据库,所以你必须提供一个fixture。
  • 对不起,它有效,我不知道为什么突然数据库中的所有数据都消失了。 :( 而且它不能使用 jobs=Job.objects.exclude(end_time__lte =datetime.now(), isActive=True)
猜你喜欢
  • 2015-09-19
  • 1970-01-01
  • 2017-09-18
  • 2010-10-31
  • 2011-09-21
  • 2014-10-18
  • 1970-01-01
  • 1970-01-01
  • 2015-03-31
相关资源
最近更新 更多