我有一个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
。现在,我想要的是一个Atom模型的QuerySet
a
,它对应于t
,可以像这样完成:a = t.values('atom').distinct()
。到目前为止没问题。然而,我还希望
a
中的每个条目都有一个属性/字段,它保存了此Atom的States的QuerySet,仍然反映了原始选择t
上的条件,可以通过upstate
或lostate
之一的ForeignKey实现。到目前为止,我已经通过循环
t
,将values('upstate_id')
和values('lostate_id')
添加到Python set()
中以去除重复项,并使用此列表查询States。但是,我无法实现States嵌套在Atoms中的结构。如果可能的话,欢迎提出如何做到这一点的建议,使用未评估的
QuerySet
,因为我将它们传递给生成器(yield
语句),这是一种流式传输大量数据的好方法。