获得OneToMany关系的“一个”面,而无需在自定义管理器中重复记录

克里斯蒂安·弗洛雷斯(CristianFlórez)

我正在尝试检索关系one一方OnetoMany,但是此操作受many一方必须满足的一些条件的限制

# one side
class Car(models.Model):

# many side
class Obligation(models.Model):
    car = models.ForeignKey(to=Car, on_delete=models.CASCADE)
    expiration_date = models.DateField(default=date.today)

我所寻找的是获得所有这些CarObligation他们expiration_date都过期了,因为我已经创建了一个下面manager执行此操作:

from datetime import date

TODAY = date.today()


class CarManager(models.Manager):
    """Define a manager for Car model."""

    def with_obligations_expired(self) -> "QuerySet[Car]":
        """Get those cars whose obligations are expired."""
        return self.get_queryset().filter(
            obligation__expiration_date=TODAY
        )

问题

如果您在运行时Car有2或3 ObligationCar.objects.with_obligations_expired()则将获得:

<QuerySet [<Car: car1>, <Car: car1>, <Car: car1>]>

结果是具有汽车重复记录的Queryset列表,因为许多义务属于一辆汽车,那么每个义务都会返回该汽车所属的汽车。但我需要一个没有重复记录的列表。

我的意思是我需要获得那些义务已到期且没有重复记录的汽车的清单。

威廉·范昂塞姆

您可以使用.distinct()[Django-doc]返回一次相同的对象:

from datetime import date

class CarManager(models.Manager):
    """Define a manager for Car model."""

    def with_obligations_expired(self) -> "QuerySet[Car]":
        """Get those cars whose obligations are expired."""
        return self.get_queryset().filter(
            obligation__expiration_date__lte=date.today()
        ).distinct()

因此,如果至少有一个已过期,则此查询集将返回Car给定值。Obligation

您可能要使用__lt查找[Django-doc]__lte查找[Django-doc]进行过滤,以使到期日期今天之前

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

自定义elfinder的右键菜单(一个jquery文件管理器插件)

来自分类Dev

如何从自定义位置管理器调用另一个视图控制器类中的 didUpdateLocation?

来自分类Dev

Android:自定义对象中的警报管理器?

来自分类Dev

Google 标签管理器中一个大型自定义 html 标签或多个单独标签之间的任何性能差异

来自分类Dev

在json对象数组中添加重复记录并删除最后一个重复

来自分类Dev

如何在反向关系中使用自定义管理器?

来自分类Dev

仅从表中获得重复记录一次?

来自分类Dev

在很棒的窗口管理器中定义一个关键功能

来自分类Dev

需要小型发行版而无需桌面或Windows管理器,仅运行一个图形应用程序

来自分类Dev

查询以选择一个“更完整”的重复记录

来自分类Dev

在 Rails 中将重复记录显示为一个

来自分类Dev

如何更新SQL表中许多重复记录中的第一个?

来自分类Dev

在data.table中查找*所有*重复记录(不是全而是一个)

来自分类Dev

在MySQL中更新重复记录(仅第一个mtch)

来自分类Dev

Django:如何级联在不同抽象类中定义的自定义管理器?

来自分类Dev

从具有20,000条记录的网格中查找重复记录,而无需快速访问数据库

来自分类Dev

在自定义验证器中获取实体管理器

来自分类Dev

与其他电子邮件地址共享一个自定义的Google工作表功能,而无需显示源代码

来自分类Dev

通过自定义内容类型管理器获取数组的第一项

来自分类Dev

AFNetworking 2自定义会话管理器

来自分类Dev

自定义内存管理器抽象

来自分类Dev

自己的自定义Android策略管理器

来自分类Dev

SBT自定义冲突管理器

来自分类Dev

自定义可拖动布局管理器

来自分类Dev

自定义模型管理器的链接方法

来自分类Dev

自定义下载管理器JavaScript

来自分类Dev

Django自定义模型管理器

来自分类Dev

django自定义管理器manytomany字段添加

来自分类Dev

自己的自定义Android策略管理器

Related 相关文章

  1. 1

    自定义elfinder的右键菜单(一个jquery文件管理器插件)

  2. 2

    如何从自定义位置管理器调用另一个视图控制器类中的 didUpdateLocation?

  3. 3

    Android:自定义对象中的警报管理器?

  4. 4

    Google 标签管理器中一个大型自定义 html 标签或多个单独标签之间的任何性能差异

  5. 5

    在json对象数组中添加重复记录并删除最后一个重复

  6. 6

    如何在反向关系中使用自定义管理器?

  7. 7

    仅从表中获得重复记录一次?

  8. 8

    在很棒的窗口管理器中定义一个关键功能

  9. 9

    需要小型发行版而无需桌面或Windows管理器,仅运行一个图形应用程序

  10. 10

    查询以选择一个“更完整”的重复记录

  11. 11

    在 Rails 中将重复记录显示为一个

  12. 12

    如何更新SQL表中许多重复记录中的第一个?

  13. 13

    在data.table中查找*所有*重复记录(不是全而是一个)

  14. 14

    在MySQL中更新重复记录(仅第一个mtch)

  15. 15

    Django:如何级联在不同抽象类中定义的自定义管理器?

  16. 16

    从具有20,000条记录的网格中查找重复记录,而无需快速访问数据库

  17. 17

    在自定义验证器中获取实体管理器

  18. 18

    与其他电子邮件地址共享一个自定义的Google工作表功能,而无需显示源代码

  19. 19

    通过自定义内容类型管理器获取数组的第一项

  20. 20

    AFNetworking 2自定义会话管理器

  21. 21

    自定义内存管理器抽象

  22. 22

    自己的自定义Android策略管理器

  23. 23

    SBT自定义冲突管理器

  24. 24

    自定义可拖动布局管理器

  25. 25

    自定义模型管理器的链接方法

  26. 26

    自定义下载管理器JavaScript

  27. 27

    Django自定义模型管理器

  28. 28

    django自定义管理器manytomany字段添加

  29. 29

    自己的自定义Android策略管理器

热门标签

归档