Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >Django模型中的复派生属性

Django模型中的复派生属性
EN

Stack Overflow用户
提问于 2010-04-22 11:32:28
回答 1查看 533关注 0票数 0

我想做的是在用户对内容进行投票的情况下为站点实现提交评分,就像在reddit中一样(参见http://code.reddit.com/browser/sql/functions.sql中的“热”函数)。编辑:最终希望能够检索任意筛选的任意长度的提交列表,根据它们的分数排列。

我的提交模型目前跟踪向上和向下的总票数。当前,当用户投票时,我创建并保存一个相关的投票对象,然后使用F()表达式更新提交对象的投票总数。问题是我想同时更新提交的分数,但是F()表达式仅限于简单的操作(缺少对log()、date_part()、符号()等的支持)。

根据我对Django有限的经验,我可以在这里看到5个选项:

  1. 以某种方式扩展F() (还没有查看代码)以支持缺失的

函数;这是我的首选选项,似乎适合在

  1. 框架内,最好的
  2. 在我的数据库中定义了一个评分函数(很像reddit的“热”函数),并让
  3. 使用该函数的值作为得分字段的值;据我所知,第二种方式是不可能的,
  4. 将我的两步投票过程封装在一个适当隔离的事务中,这样我就可以用Python计算出投票总数,然后更新提交的总投票总数,而不必担心在此期间可能会添加/更改另一次反对提交的投票;我不愿选择这条路线,因为它似乎过于复杂--在这种情况下,什么是“适当的隔离事务”?
  5. 使用原始SQL;我更愿意完全避免这种情况--如果我必须为这样一个常见的用例恢复到SQL,那么ORM又有什么意义呢?(请注意,这是来自某个热爱sprocs的人,但为了方便development.)
  6. (edit:,在进一步讨论之后使用了一个额外的select参数来计算分数;这将工作,但会给DB带来不必要的负担(每次查询运行时,都会被迫计算每次提交的数据的得分;缓存在这里可能有帮助,但似乎还是有点笨拙)

在我开始扩展F() (我甚至不确定这是可能的)之前,我准备重新发明轮子吗?有什么更标准的方法吗?这似乎是一个普通的用例,但在一个小时的搜索中,我还没有找到一个通用的解决方案.

编辑:还有一个选项:将数据库脚本中字段的默认值设置为包含my函数的表达式。这并不像#1那样灵活,但可能是解决问题的最快和最干净的方法(尽管我对扩展F()的初步研究看起来很有希望)。

EN

回答 1

Stack Overflow用户

发布于 2010-04-22 12:29:16

为什么你不能每隔一段时间就把分数去修饰,用投票对象来重建它呢?

如果不能做到这一点,就很容易创建一个“property”函数,作为一个对象属性进行评分。

代码语言:javascript
运行
AI代码解释
复制
@property
def score(self):
    ... calculate score from Vote objects ...
    return score

我从来没有在这样的属性上使用过F(),但是它是Python,所以我打赌它能工作。

如果您使用django投票(我建议这样做),您可以将#3放在经理的record_vote函数中,因为所有的投票事务都是这样发生的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2693859

复制
相关文章
用户登录界面[通俗易懂]
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/166531.html原文链接:https://javaforall.cn
全栈程序员站长
2022/09/20
3.4K0
用户登录界面[通俗易懂]
CSS——用户界面
用户界面(User Interface)属性是一些与用户界面特性相关的CSS属性。
Html5知典
2019/11/26
7390
好的用户界面-界面设计的一些技巧
如此有用的文章我已记不得是什么时候发现的了,但在看完的那一刻便想将之翻译,分享给大家自己也受用。
lyb-geek
2019/08/12
7810
好的用户界面-界面设计的一些技巧
图形用户界面入门
EasyGUI 是 Python 中一个非常简单的 GUI 编程模块,不同于其他的 GUI 生成器,它不是事件驱动的。相反,所有的 GUI 交互都是通过简地函数调用就可以实现。
清菡
2020/12/02
9500
图形用户界面入门
[javaSE] GUI(图形用户界面)
调用Frame对象的setSize()方法,设置尺寸,参数:int的宽度,int的高度
唯一Chat
2019/09/10
9120
[javaSE] GUI(图形用户界面)
模拟用户登录界面
上网过程中,我们常常会有一个账号的登录过程,本篇博客通过模拟用户登录界面以及登录过程过多时,引发的账号锁定现象。形象地变现出用户登录的详细过程。
算法与编程之美
2021/12/21
3.4K0
用户界面开发基础
Activity是Android中最核心的应用程序组件,也是大多数程序必须使用的用于显示界面的组件。
小小工匠
2021/08/16
1.8K0
CSS用户界面样式
所谓的界面样式, 就是更改一些用户操作样式, 比如 更改用户的鼠标样式, 表单轮廓以及 防止表单域拖拽等。但是比如滚动条的样式改动受到了很多浏览器的抵制,因此我们就放弃了。
星辰_大海
2020/09/30
1.9K0
后台管理系统界面_用户界面管理系统
3. FreshUI – Premium Web App and Admin Template
全栈程序员站长
2022/10/01
4.5K0
后台管理系统界面_用户界面管理系统
Android用户界面开发概述
相信通过前面15期的学习,Android的开发环境已经基本掌握了,如果仍有问题,欢迎到Android零基础入门技术讨论微信群交流,从本期开始正式来一步一步踏入Android开发之路。 Android应用开发的一项内容就是用户界面的开发。Android提供了非常丰富的用户界面组件,借助于这些用户界面组件,开发者可以非常方便地进行用户界面开发,而且可以开发出非常优秀的用户界面。 一、界面UI元素介绍 Android应用是运行于手机系统上的程序,这种程序给用户的第一印象就是用户界面。接下
分享达人秀
2018/02/02
2.5K0
Android用户界面开发概述
Elasticsearch Cerebro 用户界面介绍
Cerebro 是查看分片分配和最有用的界面之一通过图形界面执行常见的索引操作。 完全开放源,并且它允许您添加用户,密码或 LDAP 身份验证问网络界面。Cerebro 是对先前插件的部分重写,并且可以作为自运行工具使用应用程序服务器,基于 Scala 的Play 框架。
HLee
2020/12/29
1K0
Elasticsearch Cerebro 用户界面介绍
Elasticsearch: Cerebro 用户界面介绍
Cerebro 是以前的 Elasticsearch 插件 Elasticsearch Kopf 的演变(https://github.com/lmenezes/elasticsearch- kopf) – 这不适用于 Elasticsearch 版本5.x或更高版本,这是由于删除了 site plugins。
腾讯云大数据
2020/11/11
3.8K0
Elasticsearch: Cerebro 用户界面介绍
odoo 开发入门教程系列-一些用户界面
上一章,我们通过CSV文件添加了数据。当需要添加数据格式简单时,用CSV格式还是很方便的,当数据格式更复杂时(比如视图架构或者一个邮件模板),我们使用XML格式。比如包含HTML tags的 help field。虽然可以通过CSV文件加载这样的数据,但是使用XML更方便。
授客
2023/03/26
3.1K0
odoo 开发入门教程系列-一些用户界面
Pro/ENGINEER Wildfire 4.0的用户界面
Pro/ENGINEER Wildfire 4.0菜单栏位于标题栏的下面。系统将控制命令按性质分类放置于各个菜单中。
枫桦
2022/08/02
6410
Pro/ENGINEER Wildfire 4.0的用户界面
python图形用户界面(一):创建第一个GUI图形用户界面
本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑。如果觉得好可以分享转发,有问题的地方也欢迎指出,在此先行谢过。
叶子陪你玩
2020/03/19
1.7K0
python图形用户界面(一):创建第一个GUI图形用户界面
python图形用户界面(二):如何给GUI界面添加一个按钮?
本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑。如果觉得好可以分享转发,有问题的地方也欢迎指出,在此先行谢过。
叶子陪你玩
2020/03/23
2.3K0
python图形用户界面(二):如何给GUI界面添加一个按钮?
python图形用户界面(三):如何简单高效地实现GUI界面设计??
本系列课程是针对无基础的,争取用简单明了的语言来讲解,学习前需要具备基本的电脑操作能力,准备一个已安装python环境的电脑。如果觉得好可以分享转发,有问题的地方也欢迎指出,在此先行谢过。
叶子陪你玩
2020/03/25
2.8K0
图形用户界面和游戏开发
GUI是图形用户界面的缩写,图形化的用户界面对使用过计算机的人来说应该都不陌生,在此也无需进行赘述。Python默认的GUI开发模块是tkinter(在Python 3以前的版本中名为Tkinter),从这个名字就可以看出它是基于Tk的,Tk是一个工具包,最初是为Tcl设计的,后来被移植到很多其他的脚本语言中,它提供了跨平台的GUI控件。当然Tk并不是最新和最好的选择,也没有功能特别强大的GUI控件,事实上,开发GUI应用并不是Python最擅长的工作,如果真的需要使用Python开发GUI应用,wxPython、PyQt、PyGTK等模块都是不错的选择。
用户8442333
2021/05/19
1.8K0
「R」Shiny:用户界面(三)布局
在我们知道如何创建一系列输入和输出控件之后,我们需要学会如何在一个页面中对它们进行排列,以达到比较好的展示效果。这正是布局函数的工作,布局函数提供了一个应用高层次的可视化结构。
王诗翔呀
2020/07/06
3.8K0
「R」Shiny:用户界面(三)布局
操作系统的用户界面
操作系统的用户界面(或称接口) 是操作系统提供给用户与计算机打交道的外部机制。用户能够借助这种机制和系统提供的手段来控制用户所在的系统。
岳泽以
2022/10/26
1.8K0
操作系统的用户界面

相似问题

渐近符号

24

渐近符号性质-证明?

13

如何证明渐近符号

20

如何将渐近函数替换为渐近符号?

18

渐近符号图的解释

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档