Django postgres约束与GIST一起排除

Django postgres约束与GIST一起排除,django,postgresql,Django,Postgresql,我创建了一个时间字段,如下所示: start_date = models.DateField() end_date = models.DateField() 尝试在具有的表上创建约束时 ALTER TABLE analytics EXCLUDE USING gist (campaign WITH =, tstzrange(start_date, end_date) WITH &&) 我犯了一个错误 ERROR: functions in index express

我创建了一个时间字段,如下所示:

start_date = models.DateField()
end_date = models.DateField()
尝试在具有的表上创建约束时

 ALTER TABLE analytics
    EXCLUDE USING gist (campaign WITH =, tstzrange(start_date, end_date) WITH &&)
我犯了一个错误

ERROR:  functions in index expression must be marked IMMUTABLE

有人知道如何解决这个问题吗?

您正在将
date
转换为
timestamp with timezone
,该函数不是不变的,而是相当稳定的。它是这样的,因为对于传递的相同参数,它不会总是给出相同的结果

我在这里看到两个选项:

1) 更改约束以使用daterange(或不带时区的时间戳):


2) 将表中这些字段的类型更改为timestamptz

您正在将
date
转换为
timestamp with timezone
,并且该函数不是不变的,而是相当稳定的。它是这样的,因为对于传递的相同参数,它不会总是给出相同的结果

我在这里看到两个选项:

1) 更改约束以使用daterange(或不带时区的时间戳):

2) 将表中这些字段的类型更改为timestamptz

EXCLUDE USING gist (campaign WITH =, daterange(start_date, end_date) WITH &&)