Django自定义注解功能

2024-02-05

我想使用 Django 构建一个简单的热门问题列表。我有一个function https://web.archive.org/web/20150526231733/http://amix.dk/blog/post/19588评估“hotness”每个问题都基于一些论点。

函数看起来与此类似(完整功能在这里 https://web.archive.org/web/20150526231733/http://amix.dk/blog/post/19588)

def hot(ups, downs, date):
    # Do something here..
    return hotness

我的问题模型和投票模型(相关部分)

class Question(models.Model):
    title = models.CharField(max_length=150)
    body = models.TextField()
    created_at = models.DateTimeField(auto_now_add=True)

class Vote(models.Model):
    question = models.ForeignKey(Question, related_name='questions_votes')
    delta = models.IntegerField(default=0)

现在delta attribute是正的还是负的。热门函数接收赞成票数和反对票数以及问题的创建日期。

我已经尝试过类似的方法,但它不起作用。

 questions = Question.objects.annotate(hotness=hot(question_votes.filter(delta, > 0),question_votes.filter(delta < 0), 'created_at')).order_by('hotness')

我收到的错误是:global name 'question_votes' is not defined
我理解这个错误,但我不知道这样做的正确方法。


您不能使用 python 函数进行注释。注释是在数据库级别完成的计算。 Django 只为您提供了一组可以由数据库处理的基本计算 - SUM、AVERAGE、MIN、MAX 等等...对于更复杂的东西,仅从版本 1.8 开始,我们有一个用于更复杂的 API查询表达式 https://docs.djangoproject.com/en/1.8/ref/models/expressions/。在 Django 1.8 之前,实现类似功能的唯一方法是使用.extra https://docs.djangoproject.com/en/1.8/ref/models/querysets/#extra这意味着编写简单的 SQL。

所以你基本上有两个选择。

First

使用纯 SQL 编写热度计算.extra或者如果您的 Django 版本 >= 1.8,则通过新的 API。

Second

在模型中创建热度字段,该字段将由 cron 作业每天计算一次(或更频繁,具体取决于您的需要)。并根据您的需要使用它(最热门的列表)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Django自定义注解功能 的相关文章

随机推荐

  • Highcharts TypeScript,y 轴标签

    请参考讨论Highcharts y 轴文本标签 https stackoverflow com questions 4987457 highcharts text labels for y axis设置y轴标签的方法 I used http
  • GWT UiBinder 和图像精灵

    我无法让 CSS 图像精灵出现在 GWT UiBinder 中 我做了评论如何在 GWT 中使用图像精灵 https stackoverflow com questions 4535094 how do i use image sprite
  • 如何创建与环境无关的 JavaScript 库

    我正在创建一个 javascript 库 我希望它与环境无关 它不会使用 DOM AJAX 或 NodeJS api 它将是普通的 javascript 因此 它应该可以在任何 javascript 环境中运行 浏览器 npm meteor
  • 12因素应用程序存储配置的过程是什么?

    所以我一直将我的应用程序主要构建为 12 因素应用程序 现在查看配置部分 目前 我有用于开发和生产的单独配置文件 通过构建过程 我们可以构建开发或生产映像 代码 100 相同 唯一改变的是配置 现在我 100 明白 在 12 因素应用程序中
  • C++中iostream头的cout、cerr、clog有什么区别?什么时候使用哪一个?

    我尝试研究之间的区别cout cerr and clog在互联网上但找不到完美的答案 我仍然不清楚何时使用哪个 谁能通过简单的程序向我解释并说明何时使用哪个程序的完美情况 我参观过这个网站 http www tutorialspoint c
  • 嵌套向量与连续数组的性能影响

    是否有任何可靠的测试可以清楚地显示访问和写入嵌套向量与 C 内置数组之间的性能差异 我听说 与访问单个数组中的元素 所有元素都存储在连续的内存中 相比 使用嵌套 多维 向量通常会产生一些性能开销 但这对我来说似乎都是假设的 我还没有看到任何
  • Blazor 启动错误:System.Threading.SynchronizationLockException:无法在此运行时上等待监视器

    我试图在 blazor 客户端 启动期间调用 api 将语言翻译加载到 ILocalizer 中 此时 我尝试从获取请求中获取 Result blazor 会在标题中抛出错误 这可以通过在program cs中调用此方法来复制 privat
  • Socket.io 不在 /socket.io/socket.io.js 中提供服务

    我已经在这里阅读了有关我的 node js 问题的答案 但我的问题仍然存在 在服务器中使用socket io 一切看起来都正常 但在客户端 chrome 说 无法加载资源 服务器响应状态为 404 未找到 本地主机 3382 so cket
  • 两个向量的欧氏距离

    如何找到两个向量的欧几里得距离 x1 lt rnorm 30 x2 lt rnorm 30 Use the dist 函数 但您需要根据第一个参数的两个输入形成一个矩阵dist dist rbind x1 x2 对于OP问题中的输入 我们得
  • eclipse远程调试超时问题

    当我尝试连接到本地计算机上的远程服务器 jboss 时 一切工作正常 但是如果我尝试连接到远程计算机 再次连接到jboss Eclipse 就会开始连接 并在一段时间后告诉我 Failed to connect to remote VM C
  • 空文件构造函数既不是文件也不是目录

    以下两种创建文件的方法有什么区别 new File System getProperty user dir new File Java 将第一个识别为目录 第二个识别为目录既不是文件也不是目录 为什么会这样 Code public clas
  • MVC 3模型foreach过滤器

    我有以下剃刀语法 foreach var p in Model b p Age b 我想过滤 foreach 循环以仅查看 p City New York 的模型记录 我的语法会是什么样子 我希望我能正确解释这一点 Thanks forea
  • 在 iOS8 中:UIPopoverController PresentPopoverFromRect 不再适用于 keyWindow

    如标题所示 在 iOS8 中 UIPopoverControllerpresentPopoverFromRect 不再适用于 UIApplicationsharedApplication keyWindow iOS7下确实可以用 我验证了以
  • DB2 SQL 中的正则表达式

    除了使用 UDF 是否有对 DB2 9 7 的 REGEXP In SQL 支持 从 DB2 11 1 开始 有内置的正则表达式支持 其中一项新功能是REGEXP SUBSTR http www ibm com support knowle
  • 如何更改大屏幕的背景颜色?

    我想知道如何更改 jumbotron 类的背景颜色 它有一个默认值background color eee在 bootstrap css 中 我试图通过删除它并给出属性来覆盖none none important transparent进入
  • 使用 typescript 和 angular2 将图像上传到存储 blob

    我正在使用打字稿开发 Angular 2 应用程序 在我当前的项目中 我实现了将图像上传到天蓝色存储 blob 的功能 为此我点击了以下链接 http www ojdevelops com 2016 05 end to end image
  • 如何在 Pillow-Python 中使用流打开简单图像

    from PIL import Image image Image open image jpg file path io BytesIO image save file path JPEG image2 Image open file p
  • WCF 证书身份验证不起作用

    我已经构建了 WCF helloworld 客户端和服务器 我想在它们之间使用证书身份验证 我收到的错误是 调用者未经服务验证 我使用 makecert exe 创建了两个证书 客户端上的证书安装在 个人 受信任的人 和 第三方根证书颁发机
  • 如何使用 Azure Function 中的 Azure 托管身份通过触发器访问服务总线?

    我在 Azure 中创建了一个 ServiceBus 命名空间 以及一个主题和订阅 我还有一个简单的 Azure 版本 1 函数 可以触发 ServiceBus 中收到的主题 如下所示 FunctionName MyServiceBusTr
  • Django自定义注解功能

    我想使用 Django 构建一个简单的热门问题列表 我有一个function https web archive org web 20150526231733 http amix dk blog post 19588评估 hotness 每