Django queryset从shell和服务器返回不同的结果

Django queryset从shell和服务器返回不同的结果,django,django-models,django-queryset,Django,Django Models,Django Queryset,我有一个Django查询集,在不同的情况下得到不同的结果,我感到困惑 texts = Text.objects.filter(keywords__icontains=word) 模型: class Text(models.Model): views = models.IntegerField(default=0) keywords = models.CharField(max_length=250) response = models.CharField(max_le

我有一个Django查询集,在不同的情况下得到不同的结果,我感到困惑

texts = Text.objects.filter(keywords__icontains=word)
模型:

class Text(models.Model):

    views = models.IntegerField(default=0)
    keywords = models.CharField(max_length=250)
    response = models.CharField(max_length=140)
该调用(按字面意思复制)通过./manage.py shell获得预期结果,但在服务器上找不到任何内容

当我调用Text.objects.all时,它会调出结果,但由于某种原因,服务器上的过滤器找不到与任何其他情况相同的结果


为什么???

可能是因为您的生产数据库引擎与开发数据库引擎不同,我假设您在本地计算机上运行manage.py shell

请记住,行为-尤其是字符串匹配-可能会有所不同

或者数据库的内容可能不同


如果manage.py shell访问同一数据库,则结果应相同。您确定来自Web服务器的请求正确吗?检查您的数据库日志。

这是在同一台机器上使用相同的settings.py文件吗?如果您没有在两台机器上都运行syncdb?您如何在服务器上定义word(可能在views.py中)?我敢打赌你的问题就在那里。它们在同一台机器上,使用相同的设置。py。我在每种情况下都使用相同的过程定义word,接收短语中的字符串,然后用word=body.split“”检索第一个单词[0]。有没有更好的方法来获取字符串的第一个单词呢?我在同一台服务器上,使用相同的数据库和后端。正如我所说,objects.all包含我正在寻找的对象,具有所有正确的属性,但在筛选它时,它不会出现,只出现在生产站点上。