使用django ORM在数据库中创建函数

时间:2018-04-22 15:06:31

标签: django orm

在我的项目中,我希望得到几天过生日的人,我希望找到一个不会对查询施加任何限制的解决方案。

我发现这个solution似乎很有效并适合我的问题。但是现在我有第二个问题是使用django ORM在数据库中创建函数,因为它必须是可移植的并且也可以与测试数据库一起使用。我找不到任何正确的方法来在django中基于它来定义函数和索引。

简而言之,我想使用django在数据库中创建以下函数:

CREATE OR REPLACE FUNCTION indexable_month_day(date) RETURNS TEXT as $BODY$
SELECT to_char($1, 'MM-DD');
$BODY$ language 'sql' IMMUTABLE STRICT;

CREATE INDEX person_birthday_idx ON people (indexable_month_day(dob));

1 个答案:

答案 0 :(得分:0)

要回答您的问题,请使用RunSQL将原始SQL插入到迁移中   - 看起来您应该能够将此原始SQL放入迁移文件中,包括将创建自定义索引的函数。因此,运行迁移将在

中创建自定义

这样做 - 您应该只使用Django索引dob字段,即

dob = models.DateField(db_index=True)

并使用Django编写查询。