【发布时间】:2011-06-19 06:28:02
【问题描述】:
我有一个这样的 Django 数据模型(省略数据字段):
class Atom(Model):
pass
class State(Model):
atom = ForeignKey(Atom)
class Transition(Model):
atom = ForeignKey(Atom)
upstate = ForeignKey(State,related_name='uptrans')
lostate = ForeignKey(State,related_name='lotrans')
当我查询时,要限制的字段可以在任一模型中,因此在Transition.objects.filter(...) 上查询是最容易的,因为其他模型中的所有字段都可以通过外键访问。我们将生成的 QuerySet 称为 t。
现在我还想要一个对应t的Atom模型的QuerySeta,可以像a = t.values('atom').distinct()一样完成。到目前为止一切顺利。
但是,我还希望a 中的每个条目都具有 一个 属性/字段,该属性/字段包含此 Atom 状态的 QuerySet,仍然反映原始选择 @987654328 的标准@,通过upstate 或lostate ForeignKeys 之一。
到目前为止,我已经通过循环 t,将 values('upstate_id') 和 values('lostate_id') 添加到 Python set() 以丢弃重复项,然后使用此列表查询州来创建我的 QuerySet。但是我无法在 Atoms 中实现 State 的嵌套结构。
欢迎任何有关如何执行此操作的建议,如果可能的话,使用未评估的QuerySets,因为我将它们传递给的不是模板而是生成器(yield 语句),这是流式传输大量数据的好方法数据。
【问题讨论】:
标签: python django django-models django-queryset