首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >与Django相关的_set与显示重复的order_by

与Django相关的_set与显示重复的order_by
EN

Stack Overflow用户
提问于 2014-11-15 12:45:45
回答 1查看 494关注 0票数 0

使用Django 1.7,在我看来使用以下代码:

代码语言:javascript
运行
复制
driver = get_object_or_404(Driver, id=self.object.id)
cars = driver.car_set.order_by('model__market_date')
for car in cars:  # for testing only
    print car.id  # outputs e.g. 3, 3, 3, 5

当我尝试这样做的时候,我得到了关于汽车的重复结果(例如两次汽车#3),这取决于模型的数量。我不想要这个。

但是,当我使用cars = driver.car_set.all()时,不存在重复的结果。但我希望我的汽车清单能在market_date上排序。

有关于如何解决这个问题的指针吗?我尝试使用聚合()和didn(),但不幸的是,这并没有解决问题(或者我做错了什么)。

我对distinct()的尝试

  • driver.car_set.order_by('model__market_date').distinct()导致重复
  • driver.car_set.order_by('model__market_date').distinct('model__market_date')导致重复
  • driver.car_set.order_by('model__market_date').distinct('pk')产生Exception Value: SELECT DISTINCT ON expressions must match initial ORDER BY expressions
EN

回答 1

Stack Overflow用户

发布于 2014-11-15 13:52:40

我不知道你为什么会收到重复的结果,因为我没有发现你的代码中有什么不自然的地方。如果您只想收到汽车id的列表(没有副本),您可以通过以下方式更改for循环:

代码语言:javascript
运行
复制
cars_id = []                 # creating empty list for cars id with duplicates 
for car in cars:             # for cycle 
    cars_id.append(car.id)   # appends numbers 3, 3, 3, 5 to our list
cars_id = list(set(cars_id)) # making list with unique values using built-in function set()

所以在你有了这样的东西之后:

代码语言:javascript
运行
复制
>>> cars_id
... [3, 5]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26945977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档