Django Querysets-在多个条件下工作时优化其数量

时间:2018-07-26 07:58:38

标签: django django-queryset

我有两个模型,父母和孩子。

class Parent(models.Model):

    has_featured = models.BooleanField()
    is_active = models.BooleanField(c)


class Child(models.Model):

    parent =  models.ForeignKey(Parent,on_delete=models.CASCADE)
    is_featured = models.BooleanField()
    is_active = models.BooleanField()

规则:

1)对于要显示的父/子,is_active应该为true 2)仅当父项上的is_active和子项上的is_active均为True时,才可以显示子项 3)has_featured,is_featured确定它们是否出现在特殊位置 4)如果帐户has_featured为True且Child is_featured为True,则孩子可以出现在精选位置

我有一张特色幻灯片,需要显示最小数量的子元素,默认情况下,该子元素应具有is_featured True

由于我需要显示一个最小值,所以我遇到以下问题:

1)有no has_featured=True个父级。我可以显示限制MAX_NR对应于帐户is_active=True的任何is_featured值的孩子。孩子们需要活跃。

2)有has_featured=True Parent,也有孩子is_featured=True,但是孩子的数量在MIN_NR之下

在这种情况下,直到MAX_NR为止,孩子的列表都必须填写完整,其孩子与帐户is_active=True对应,而与孩子is_featured的值无关。

3)有has_featured = True父级,但是没有子级is_featured = True,在这种情况下,我可以显示与帐户is_active = True对应的is_active = True的任何child,has_featured为True

在这种情况下,直到MAX_NR为止,孩子的列表都必须填写完整,孩子与帐户is_active=True对应的孩子对is_featured的值无所谓。

有很多条件,我在寻找解决方案时遇到了麻烦,该解决方案具有紧凑的代码和减少的查询数量。所以我正在寻找像python和queryset一样好的

0 个答案:

没有答案