前提・実現したいこと
ビュー内でオブジェクトの状況に合わせて異なるメッセージをテンプレートに表示したいです。
(テンプレート内で{% if xyz... %} でメッセージを振り分けることも可能だと思いますが、分岐の数が多かったりするとHTML文が冗長になることと、読み込み速度が遅くなるかと思いエンドサイドで処理したいと思い質問しました。)
下記のソースでは、context['candidates']にviewsでフィルダーで該当したPersonモデルが格納されていると思います。そのPersonモデルの send_to_companyフィールドの状態に応じて、異なるメッセージをコンテキストに格納されている各Personモデルごとに付与してあげたいです。
最終的に、HTMLテンプレート内で add_message みたいな追加の疑似てきなフィールドを追加できたらしてみたいのですが、これは可能でしょうか?
可能なら記述の方法も教えていただきたいです。
{% for candidate in 'candidates' %} {{candidate.birthday}} {{candidate.add_message}} <= view内で作成したフィールド {% endfor %}
該当のソースコード
モデル class Person(models.Model): OPEN_CLOSE = ( ('1', _('非公開')), ('2', _('公開')), ) user = CharField('ユーザー名', max_length=120, null=True) birthday = models.DateField(_('生年月日')) apply_company = models.ForeignKey('Company',verbose_name=_('応募先'),on_delete=models.CASCADE,null=True,blank=True)画'),blank=True,null=True) send_to_company = CharField(_('履歴書公開許可'),choices=OPEN_CLOSE,default='1',blank=True,max_length=30) def __str__(self): return self.user class Company(models.Model): user = CharField('ユーザー名', max_length=120, null=True) corp_name = CharField(_('企業名'), max_length=100) hp = CharField(_('ホームページ'),max_length=260, blank=True,null=True) created_at = DateTimeField('登録日', default=timezone.now) def __str__(self): return self.corp_name ビュー def candidates_manager(request): user = request.user company = Company.objects.get(user=user.username) candidates = Person.objects.filter(apply_company=company) context={'candidates':candidates,} return render(request,'company/candidates_manager.html',context)
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/01/14 03:02