【问题标题】:Django filter sub-class modelsDjango过滤子类模型
【发布时间】:2011-05-02 19:59:08
【问题描述】:

我(基本上)有以下型号:

class foo(models.model):
    name = models.CharField(max_length=255)
    size = models.PositiveIntegerField()

class bar(foo):
    colour = models.CharField(max_length=25)

class baz(foo):
    material = models.CharField(max_length=25)

我想做的是根据 url 参数过滤这些模型。因此,如果 url 是 http://www.mysite.com/catalogue/foo?size=3,那么所有大小为 3 的 foobarbaz 对象都会显示出来。

如果 url 是 http://www.mysite.com/catalogue/foo?size=3&colour=red&colour=green,那么在大小为 3 且颜色为红色或绿色的情况下,将显示所有具有 sizecolour 属性的 foo 对象(即 bar 对象)。

这行得通吗?

【问题讨论】:

  • 您将首先使用什么来生成这些 URL?除非您打算手动输入查询,否则我不明白为什么无法通过后端视图传递信息

标签: python django url parameters filter


【解决方案1】:

(更新:This Answer 之前提出的问题比我在下面写的要好。)

This article 解释了为什么这在 Django 中效率低下——基本上,因为它需要对所有子类的表进行昂贵的连接。 (我写了一个 ORM 来做这样的多态性,查询很快就失控了。Django 家伙在这里做出了正确的决定。)

文章描述了一种编写 MixIn 来单独查询每个子类的方法。如果您在整个应用中需要这种行为,请考虑实施类似的方法。

如果这是针对单个视图,您最好(更快,更容易理解)编写视图来查询每个子类并创建所有结果的列表。

【讨论】:

  • 我意识到我之前已经问过similar question,答案与您的链接相同。我会看看我以前的代码是否可以重用。
猜你喜欢
  • 1970-01-01
  • 2014-05-05
  • 2012-03-13
  • 1970-01-01
  • 2022-08-02
  • 2017-02-21
  • 1970-01-01
  • 2018-09-01
相关资源
最近更新 更多