django - 从查询集中获取唯一多对多记录的列表

标签 django django-models django-templates

我的模型:

class Order(models.Model):
    ordered_by = models.ForeignKey(User)
    reasons = models.ManyToManyField(Reason)
class Reason(models.Model):
    description = models.CharField()

基本上,用户创建一个订单并给出该订单的原因。即,约翰有两个订单(一个是铅笔,因为他不在,而且因为他不喜欢他目前的库存。第二个订单是钢笔,因为他不在)。

我想打印一个用户下订单的所有原因的列表。所以在 john 下,它应该打印“他出局了”、“他不喜欢他当前的股票”;只有那两行。如果我只是选择 john 的所有订单,遍历它们并打印出他们的“原因”,它将再次打印“他出局”、“他不喜欢他当前的库存”,然后再次打印出“他出局”。我不想要这些重复的值。

我如何选择他所有订单的原因列表,以便该列表包含所有唯一行?

最佳答案

Reason.objects.filter(order__ordered_by=john).distinct()

关于django - 从查询集中获取唯一多对多记录的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3002902/

相关文章:

django - 如何应用 Django 补丁

django - 通过 Nginx (Django/React/Nginx/Docker-Compose) 提供 Django 媒体文件

python - RequestDataTooBig Request body exceeded settings.DATA_UPLOAD_MAX_MEMORY_SIZE

Python pickle 似乎在类内部中断,但在命令行脚本中却没有

python - 将样式表与 django-widget-tweaks 一起使用?

python - Django:从数据库显示的 DecimalField 格式值

django - 使用 django 模板 url 标签时,项目名称自动插入到 url 中

django - 无法在我的电脑上启动 Django 服务器

python - Django 用户模型字段保存在哪里?

Django 管理列表过滤器