我有一个页面模型,由多个内容块组成。
显然这样不起作用,因为
class Page(models.Model):
...
class Block(models.Model):
page = models.ForeignKey(Page)
...
Block
还有几个属性决定了它是否被认为是“活动的”(一些布尔值和一个日期时间字段)。我有一个 Block
模型管理器,可以获取活动块的列表。
Block.objects.active()
Page.objects.first().block_set.active()
我希望能够编写一个查询集,仅返回具有活动块的Page
对象。我想使用现有的Block
活动管理器来实现这一点,以便只定义一次“活动”块(DRY)。例如:
Page.objects.annotate(count=Count('block__active')).filter(count__gt=0)
显然这样不起作用,因为
active
不是Block
的属性。我是否可以使用现有的Block
管理器来实现这一点?
active()
所需的所有数据都存储在数据库中吗?因为当它存在于数据库中时,您可以使用该逻辑来构建注释。 - Maccesch