python - Django 查询具有唯一字段的项目

标签 python django postgresql

我有一个 Item 模型,还有一个带有 Items 和 Users 的 manyToOne(每个用户有多个项目)。我想查询项目但不会两次获得同一用户的任何项目。例如,如果我的用户有元素:

John
  iPhone
  macbook
  mousepad

Elaine
  PC
  Battery

Jane
  TV
  Cabinet

我想进行项目查询并取回 iPhone、PC、TV 或 macbook、PC、Cabinet 或任何组合,只要每个项目都有唯一的用户。有没有办法用 django 和 SQL 做到这一点?还是我必须在 python 级别上执行此操作?也许是这样的:

items = Item.objects.all()
items = items.filter(user__isunique=True) #This doesn't work. I tried it.

最佳答案

你需要

Item.objects.filter(your_filter).distinct('user') #or Item.objects.distinct('user')

如果你的模型是这样的:

class Item(models.Model):
   user = models.ForeignKey(User)
   # ...

但如果你想要小心 order_by with distinct

关于python - Django 查询具有唯一字段的项目,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27671437/

相关文章:

python - 在OpenCv中从图像提取墙

javascript - Django、javascript 和复杂表单

python - 如何在用户输入错误时重新加载具有无效表单的页面

javascript - 通过 Markdown 解析器在 HTML 渲染期间删除第一行 block

python - 具有虚拟环境的 Django

java - org.postgresql.util.PGobject 无法转换为 org.postgis.PGgeometry

python - 如何从多个模型中获取张量并对它们进行平均?

django - 使用 django-pgviews 从 PostgreSQL 获取数据

sql - 获取列,4 个表

java - org.quartz.JobPersistenceException : Couldn't acquire next trigger: ERROR: null value in column "sched_time" violates not-null constraint,