我有以下模型(当然是简化示例):
class ParentModel(Model):
id = IntegerField(primary_key=True)
family = OneToOneField(Family)
objects = SpecificManagerThatDoesAlotOfQueryLogic()
class Family(Model):
id =IntegerField(primary_key=True)
class Child(Model):
family = ForeignKey(Family, related_name='children')
is_the_relevent_child = BooleanField(default=False) #Only one Child would have this a s
score_to_sort_by = DecimalField()
我需要返回一个queryset
ParentModel
(是的,我需要这个queryset
,所以以后发生的分页等不会破坏)通过family__children__score_to_sort_by
使用is_the_relevent_child
标志来选择我订购的儿童。
我知道如果Child与家人有OneToOne关系我可以用:
ParentModel.objects.filter(**{something:something}).order_by('family__child__score_to_sort_by')
我知道这个建模并不适合这样做,但我出于其他原因需要它,所以我需要让queryset工作正常 我怀疑注释可以帮助我,但我无法弄清楚如何,(或者如果有人能指出我使用一些额外的SQL我也可以处理这个,如果不是太复杂),我们正在使用django 1.6 有任何想法吗?感谢..
答案 0 :(得分:1)
family__children__score_to_sort_by
是ParentModel上任何查询的查询行中定义良好的列。所以你可以直接过滤is_the_relevant_child
,如下:
ParentModel.objects.filter(...)
.filter(family__children__is_the_relevant_child=True)
.order_by('family__children__score_to_sort_by')
在此顺序中只应考虑相关的孩子。