Python中文
首页
教程
问答
标签
搜索
登录
注册
如何按DateTimeField排序并基于ForeignKey选择不同的元素?
回答此问题可获得
20
贡献值,回答如果被采纳可获得
50
分。
<p>我正在使用PostgreSQL作为Django项目的数据库。我有以下型号:</p> <pre><code>class Food(models.Model): """Stores a food entry""" name = models.CharField(max_length=50) image_id = models.CharField(max_length=20) description = models.TextField() class SurveyResult(models.Model): """Stores survey food result based on emoji and personality""" emoji = models.CharField(max_length=10) personality = models.CharField(max_length=50) food = models.ForeignKey(Food, on_delete=models.CASCADE) timestamp = models.DateTimeField(auto_now_add=True) rating = models.PositiveSmallIntegerField(default=0) </code></pre> <p>我需要编写一个按<code>'-timestamp'</code>排序的查询,然后只获取<code>'food'</code>的不同值。这就是我所尝试的:</p> <pre><code>SurveyResult.objects.order_by('-timestamp').distinct('food') </code></pre> <p>但是,我得到以下错误:</p> <blockquote> <p>ProgrammingError: SELECT DISTINCT ON expressions must match initial ORDER BY expressions LINE 1: SELECT DISTINCT ON ("recommender_surveyresult"."food_id") "r...</p> </blockquote> <p>我读了几个问题的答案,我发现一个答案基本上是这样的:</p> <pre><code>SurveyResult.objects.order_by('food', '-timestamp').distinct('food') </code></pre> <p>然而,我并没有得到我想要的东西,那就是最新的<code>SurveyResult</code>对象,它们具有不同的<code>food</code>。你知道吗</p> <p>我怎样才能做到这一点?你知道吗</p> <p>假设我的数据库中有下表:</p> <pre><code># surveyresults id emoji personality food timestamp rating 1 :) Famous US 1 2018-01-01 - 9:00 1 2 XD Famous CN 3 2018-01-01 - 9:10 2 3 :) Famous NZ 5 2018-01-01 - 9:15 3 4 :( Famous FR 5 2018-01-01 - 9:35 4 5 XD Famous US 1 2018-01-01 - 9:45 5 6 ;) Famous JP 4 2018-01-01 - 9:55 5 7 :o Famous SP 4 2018-01-01 - 10:00 5 </code></pre> <p>查询应提供以下信息:</p> <pre><code>id emoji personality food timestamp rating 7 :o Famous SP 4 2018-01-01 - 10:00 5 5 XD Famous US 1 2018-01-01 - 9:45 5 4 :( Famous FR 5 2018-01-01 - 9:35 4 2 XD Famous CN 3 2018-01-01 - 9:10 2 </code></pre> <p>我也想知道,是否有可能实现这一点只是一个查询。你知道吗</p>
0 条评论
分类:
Python问答
请先
登录
后评论
默认排序
时间排序
1 个回答
匿名
1天前
擅长:python、mysql、java
<p>您可以考虑向SurveyResults模型添加一个元类,然后在那里指定您的顺序</p> <pre><code>class SurveyResult(models.Model): ... class Meta: ordering = ('-timestamp',) </code></pre>
请先
登录
后评论
针对此问题:
更多的回答
关注
89
关注
收藏
1
收藏,
216
浏览
网友 提问于 2天前
相关Python问题
如何为此数据帧创建散点图?
1 回答
如何为此编写Django模板
10 回答
如何为此表达式编写正则表达式?
4 回答
如何为步进电机选择合适的值?
10 回答
如何为每15分钟间隔的日期时间行(在新列中)添加标签?
2 回答
如何为每一列创建汇总表?
3 回答
如何为每一组groupbyPandas做滚动“得到假人”
7 回答
如何为每一行分别运行函数(python)?
7 回答
如何为每一行生成一个随机数?
8 回答
如何为每一轮将pytorch模型输出存储到numpy
2 回答
如何为每个.py-fi文件创建单独的zip文件
9 回答
如何为每个<li class=”“><a>找到最近的上述同级<li>?
10 回答
如何为每个CSV列生成特定的文件?
9 回答
如何为每个csv文件使用read_csv,即使它是空的?PythonPandas
4 回答
如何为每个CSV文件创建单独的Pandas数据帧并给它们起有意义的名称?
8 回答
如何为每个datetime和每个id创建一行?
7 回答
如何为每个Django型号选择赋予不同的颜色
10 回答
如何为每个Django模型实例安排一个周期性的芹菜任务?
3 回答
如何为每个Django视图设置一个装饰器?
7 回答
如何为每个for循环迭代分配变量
8 回答