0

私は、「デザイン」との関係を介して m2m を持つモデル「プロジェクト」を持っています。

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 %}

テンプレートコードからこれを達成する方法はありますか?

4

2 に答える 2

1

それを行う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 %}

もう 1 つの方法は、公開されたデザインのみを返すモデルのカスタム マネージャーを作成することです。Design次に、クエリは次のように簡単になります

{% if project.desings.all %} 
于 2013-08-05T18:35:02.030 に答える
1

いいえ、ビューでこれを行う必要があります。問題なのはカウントではなく、フィルタリングです。最初に公開されたすべてのプロジェクトをコンテキストで取得してから、テンプレートで |length を使用できます。

于 2013-08-05T18:35:06.393 に答える