我有一个模型,"项目"与m2m通过关系" design"。
class Project(models.model):
...
desings = models.ManyToManyField(Design, through="ProjectDesign")
...
class ProjectDesigns(models.model):
...
class Design(models.model):
...
published = models.BooleanField(default=Falase)
...
def isPublished(self):
if self.isPublished:
return True
else:
return False
我在我的上下文中传递项目实例。我想在模板中输出附加设计的数量,基本上是这样的:
{% project.designs.isPublished.count %}
有没有办法从模板代码中完成此操作?
答案 0 :(得分:1)
你能做到的一种方法是:
class Project(models.model):
...
desings = models.ManyToManyField(Design, through="ProjectDesign")
...
def design_count(self):
return self.desings.filter(desings__published=True)
并在模板中
{% if project.design_count %}
另一种方法是,您可以为Design
模型编写custom manager,仅返回已发布的设计。然后您的查询就像
{% if project.desings.all %}
答案 1 :(得分:1)
没有。你必须在视图中这样做。这不是计数问题,而是过滤。首先在上下文中获取所有已发布的项目,然后可以在模板中使用| length。