【发布时间】:2012-01-01 12:30:51
【问题描述】:
我有两个模型:
class A(models.Model):
# fields
class B(models.Model):
a = models.ForeignKey(A)
name = models.CharField(max_length=64)
除了来自 B 的相关对象之外,我想做的是从 A 获取过滤后的查询集,并将它们附加到来自 A 的查询集,这样我就可以通过这种方式访问 name 字段:A.B.name
知道怎么做吗?
【问题讨论】:
-
您确定您不喜欢独立获取查询集然后将它们组合在一起,如stackoverflow.com/questions/431628/…?
-
如果我过滤我的 A 模型,然后将它与 B 结合会怎样?我将如何在这两个模型之间建立联系?看起来链只是盲目地连接所有元素:docs.python.org/library/itertools.html#itertools.chain
-
是的,似乎链仅连接您的查询集。但是如果你做这样的事情呢:B.objects.filter(a__some_field_of_A = 'string').然后假设你有一个你想要的来自 B 的实例 b 。然后你会这样做:b.a_set.filter(name='somethingelse')。综上所述,你通过 A 求出满足某个条件的 B 的实例,然后取一个或多个,求出其他条件下 B 中包含的 A 的所有实例。这是两个类之间的关系,但我不知道你会发现它有多大用处。无论如何,A.B 不是一个选项。
-
我已经这样做了,谢谢。
标签: django models django-queryset