Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django过滤器:SQLite和PostgreSQL之间的过滤结果不同_Django_Postgresql_Sqlite_Django Queryset - Fatal编程技术网

Django过滤器:SQLite和PostgreSQL之间的过滤结果不同

Django过滤器:SQLite和PostgreSQL之间的过滤结果不同,django,postgresql,sqlite,django-queryset,Django,Postgresql,Sqlite,Django Queryset,我在数据库表上运行了一个相对简单的查询;过滤器检查两个日期字段的值并返回查询集。选中的字段是编写的\u报告\u收到的和子床\u完成的。如果收到的编写的报告有一个日期集,而subbed\u complete没有日期集,则将返回一个结果。 如果这两个字段都设置了日期,则不会返回任何结果。 (然后对返回的任何结果与当前日期之间的“未付天数”进行简单计算。) 在SQLite数据库上本地运行时,这种方法非常有效,但当我上传到heroku以便与PostgreSQL数据库一起使用时,过滤器似乎不起作用,因为它

我在数据库表上运行了一个相对简单的查询;过滤器检查两个日期字段的值并返回查询集。选中的字段是编写的\u报告\u收到的子床\u完成的。如果收到的编写的报告有一个日期集,而subbed\u complete没有日期集,则将返回一个结果。 如果这两个字段都设置了日期,则不会返回任何结果。 (然后对返回的任何结果与当前日期之间的“未付天数”进行简单计算。) 在SQLite数据库上本地运行时,这种方法非常有效,但当我上传到heroku以便与PostgreSQL数据库一起使用时,过滤器似乎不起作用,因为它似乎忽略了subbed_complete字段中的任何日期值。我不明白为什么不。SQLite和PostgreSQL处理过滤器的方式有区别吗?我找不到任何表明这一点的文件

# views.py
class EpgReportSubeditListView(LoginRequiredMixin, EpgUserPassesTestMixin, ListView):
    """EPG-only: create a list view of reports currently being subedited
    """
    model = Report
    template_name = 'tracker/epg_report_subedit.html'
    context_object_name = 'report_subedit'
    ordering = ['subeditor']

    def get_queryset(self):
        today = datetime.now().date()
        out = []
        for obj in (self.model.objects.filter(subbed_complete__isnull=True) and self.model.objects.filter(authored_report_received__isnull=False)):
            setattr(obj, 'days_diff', (today - obj.authored_report_received).days)
            out.append(obj)
        return out

# models.py
class Report(models.Model):
    """Define fields for Report object (representing a case report)
    """
    case = models.ForeignKey(Case, on_delete=models.CASCADE, related_name='reports')
    editor = models.ForeignKey(User, on_delete=False,
                               limit_choices_to={'groups__name': 'editors'},
                               related_name='editor', null=True)
    
    # editing workflow info
    authored_report_received = models.DateField(null=True, blank=True)
    subbed_complete = models.DateField(null=True, blank=True)
    subeditor = models.ForeignKey(User, on_delete=False,
                                  limit_choices_to={'groups__name': 'subeditors'},
                                  related_name='subeditor', null=True, blank=True)
    sent_to_editor = models.DateField(null=True, blank=True)
    edited = models.DateField(null=True, blank=True)
    reporter_queries = models.CharField(max_length=3,
                                        choices=Binary_Choices,
                                        default="n")
    sent_to_deskeditor = models.DateField(null=True, blank=True)
    taken_by_deskeditor = models.DateField(null=True, blank=True)
    deskeditor = models.ForeignKey(User, on_delete=False,
                                   limit_choices_to={'groups__name': 'deskeditors'},
                                   related_name='deskeditor', null=True, blank=True)
    deskedit_complete = models.DateField(null=True, blank=True)
    sent_to_counsel = models.DateField(null=True, blank=True)
    received_from_counsel = models.DateField(null=True, blank=True)
    date_editor_publish_approve = models.DateField(null=True, blank=True)

    def get_absolute_url(self):
        return reverse("epg_home")

    def __str__(self):
        return f'{self.case} | f: {self.filename}'

Sqlite和PostgreSQL处理日期的方式不同
subbed\u complete
是一个
models.DateField
字段,但sqlite3:

没有为存储日期和/或日期而预留的存储类 时代。相反,SQLite的内置日期和时间函数是 能够将日期和时间存储为文本、实数或整数值:

应用程序可以选择以其中任何一种格式存储日期和时间,并使用内置的日期和时间函数在格式之间自由转换

因此,您应该使用postgresql在另一个环境中测试代码并调整查询