如何在Django中过滤没有其他指向它们的对象的对象?

卢卡斯·英菲特(Lucas Infante)

我正在使用Django 1.7.1。

我有一组类似于以下结构的模型:

class Group(models.Model):
    name = models.CharField(max_length=50, unique=True)

class ItemTypeOne(models.Model):
    name = models.CharField(max_length=50, unique=True)
    ref = models.ForeignKey(Group)

class ItemTypeTwo(models.Model):
    name = models.CharField(max_length=50, unique=True)
    ref = models.ForeignKey(Group)

class ItemTypeThree(models.Model):
    name = models.CharField(max_length=50, unique=True)
    ref = models.ForeignKey(Group)

如此处所述我知道可以使用orm来过滤特定类的对象未指向的对象。在我的情况下,它将是这样的:

filtered = Group.objects.exclude(itemtypeone__isnull=False,
                                 itemtypetwo__isnull=False,
                                 itemtypethree__isnull=False)

我的目标是使用orm来获得相同的结果,而无需显式通知“反向关系”,类似于(伪代码如下):

filtered = Group.objects.exclude(gereric_reverse_relations_exp__isnull=False)

使用django orm可以实现吗?

提前致谢!:)

布鲁诺·德斯胡里尔斯

您可以检查所有模型以找出哪些模型具有外键Group并动态构建查询。使用模型的_meta get_all_related_objects()列表来RelatedObject获取您的Group模型的列表

>>> related = Group._meta.get_all_related_objects()
>>> print related 
[<RelatedObject: app:itemtypeone related to group>, <RelatedObject: app:itemtypetwo related to van>, <RelatedObject: app:itemtypethree related to group>]

然后建立您的查询:

>>> excludes = dict(("%s__isnull" % ro.get_accessor_name(), False) for ro in related)

并执行查询:

>>> filtered = Group.objects.exclude(**excludes)

(警告:大多数未经测试的代码,可能需要进行一些调整)。

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Django 2.1:如何获取每个对象中包含具有指向它们的外键的对象的对象列表

来自分类Dev

指向向量中对象的指针有时指向向量中的其他对象

来自分类Dev

如何在没有来自其他类的嵌套对象的情况下返回 JSON 对象?

来自分类Dev

将一个指向对象的指针设置为nil是否会影响该对象或指向该对象的其他指针?

来自分类Dev

如何在模板中检索其他对象链接到的对象?Django的

来自分类Dev

一个对象如何在JAVA中指向许多其他对象?

来自分类Dev

如何在Xcode中引用图像和其他对象以及如何在物理上放置它们?

来自分类Dev

如何在Django admin中显示模型B的某些对象,该对象具有指向模型A的ForeignKey?

来自分类Dev

按具有多个值的其他对象过滤对象

来自分类Dev

如何在 PIL ImageEnhance 模块中解决“合同”对象没有属性“过滤器”的问题?

来自分类Dev

如何在Tensorflow 2.0中获得其他指标(不仅准确性)?

来自分类Dev

如何在Tensorflow 2.x中打印准确性和其他指标?

来自分类Dev

如何在Angular的客户指令模板中包含其他指令?

来自分类Dev

如何在Firebase中附加其他对象的路径?

来自分类Dev

如何在其他函数中引用类对象?

来自分类Dev

如何在其他函数中引用对象?

来自分类Dev

如何在QML中更改其他对象的属性

来自分类Dev

如何在Firebase中附加其他对象的路径附加?

来自分类Dev

如何在Qt中访问其他类的对象?

来自分类Dev

如何在其他对象内的所有嵌套对象中动态添加新键/值?

来自分类Dev

如何在 Django 中过滤具有多个字段对象的查询集?

来自分类Dev

如何在 Django 中按价格范围过滤对象?

来自分类Dev

Django-taggit-如何过滤所有标记的对象,为每个标记重复它们?

来自分类Dev

Flutter:如何在其他对象的字幕中添加其他值

来自分类Dev

如何在 ReactJs 中将一个对象添加到其他所有对象

来自分类Dev

如何访问其他类中的对象?

来自分类常见问题

如何在链接图中显示带有两个不同谓词的主题,它们指向同一对象?

来自分类Dev

如何在链接图中显示带有两个不同谓词的主题,它们指向同一对象?

来自分类Dev

如何根据其他数组的值过滤对象数组?

Related 相关文章

  1. 1

    Django 2.1:如何获取每个对象中包含具有指向它们的外键的对象的对象列表

  2. 2

    指向向量中对象的指针有时指向向量中的其他对象

  3. 3

    如何在没有来自其他类的嵌套对象的情况下返回 JSON 对象?

  4. 4

    将一个指向对象的指针设置为nil是否会影响该对象或指向该对象的其他指针?

  5. 5

    如何在模板中检索其他对象链接到的对象?Django的

  6. 6

    一个对象如何在JAVA中指向许多其他对象?

  7. 7

    如何在Xcode中引用图像和其他对象以及如何在物理上放置它们?

  8. 8

    如何在Django admin中显示模型B的某些对象,该对象具有指向模型A的ForeignKey?

  9. 9

    按具有多个值的其他对象过滤对象

  10. 10

    如何在 PIL ImageEnhance 模块中解决“合同”对象没有属性“过滤器”的问题?

  11. 11

    如何在Tensorflow 2.0中获得其他指标(不仅准确性)?

  12. 12

    如何在Tensorflow 2.x中打印准确性和其他指标?

  13. 13

    如何在Angular的客户指令模板中包含其他指令?

  14. 14

    如何在Firebase中附加其他对象的路径?

  15. 15

    如何在其他函数中引用类对象?

  16. 16

    如何在其他函数中引用对象?

  17. 17

    如何在QML中更改其他对象的属性

  18. 18

    如何在Firebase中附加其他对象的路径附加?

  19. 19

    如何在Qt中访问其他类的对象?

  20. 20

    如何在其他对象内的所有嵌套对象中动态添加新键/值?

  21. 21

    如何在 Django 中过滤具有多个字段对象的查询集?

  22. 22

    如何在 Django 中按价格范围过滤对象?

  23. 23

    Django-taggit-如何过滤所有标记的对象,为每个标记重复它们?

  24. 24

    Flutter:如何在其他对象的字幕中添加其他值

  25. 25

    如何在 ReactJs 中将一个对象添加到其他所有对象

  26. 26

    如何访问其他类中的对象?

  27. 27

    如何在链接图中显示带有两个不同谓词的主题,它们指向同一对象?

  28. 28

    如何在链接图中显示带有两个不同谓词的主题,它们指向同一对象?

  29. 29

    如何根据其他数组的值过滤对象数组?

热门标签

归档