标签: django-database-functions

如何在Django中创建/使用自定义数据库函数

序幕:

这是SO中经常出现的问题:

并且可以应用于上述以及以下内容:

我想在SO文档上撰写一个例子,但是自2017年8月8日关闭以来,我将按照这个广泛赞成和讨论的元回答的建议,并将我的例子写成一个自我回答的帖子.

当然,我也很乐意看到任何不同的方法!


题:

的Django/GeoDjango内置有一些数据库功能,如Lower()MakeValid()它可以像这样使用:

Author.objects.create(name='Margaret Smith')
author = Author.objects.annotate(name_lower=Lower('name')).get()
print(author.name_lower)
Run Code Online (Sandbox Code Playgroud)

有没有办法根据现有的数据库函数使用和/或创建自己的自定义数据库函数,如:

如何在Django/GeoDjango ORM中应用/使用这些功能?

python database django geodjango django-database-functions

7
推荐指数
1
解决办法
4463
查看次数

如何以天为单位注释日期时间的差异

我有一个Bookingstartenddatetime字段的模型.我想知道预订的天数.我可以在Python中执行此操作,但我需要此值以进行进一步注释.

这是我尝试过的:

In [1]: Booking.objects.annotate(days=F('end')-F('start'))[0].days
Out[1]: datetime.timedelta(16, 50400)
Run Code Online (Sandbox Code Playgroud)

这里有一些问题:

  • 我想要一个整数(或我可以在计算中使用的其他数字类型)作为输出,而不是timedelta.设置output_field在这里没有任何意义.
  • 我的总和是基于日期时间.像这样的减法,没有删除时间可能会导致整个天数关闭.

在Python中,我会这样做(end.date() - start.date()).days + 1.我怎样才能在数据库中做到这一点,最好是通过ORM(例如数据库函数),但是RawSQL这样就足以让它出门了?

django datetime django-annotate django-database-functions

2
推荐指数
2
解决办法
2532
查看次数

如何将数据库中的现有表链接到 Django 模型?

我正在学习 Django,我需要知道我是否可以将数据库中已经存在的表链接到模型(因为我听说 Django 为我们在 django app 中创建的任何模型创建了表)。

如果是这样,怎么做?

django django-models django-database django-database-functions

1
推荐指数
1
解决办法
3173
查看次数