我有两个模型,父母和孩子。
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一样好的