私はリソースページを構築しています。私は3つの利用可能な言語に分割しています。Djangoのviews.pyのテンプレートタグを辞書に関連付ける
各言語について、一連のタグがあり、各タグには特定のアイテムのリンクがあります。例えば
:
English:
Books:
* The lord of the rings
* The Silmarillion
* Introduction to Calculus
* Electricity for dummies
Articles:
* Why Python is superb (or something)
* The Tao of Eating Too Much Sugar (or something)
Portuguese:
Articles:
* Investindo em títulos de Tesouro
などなどなど。 「ポルトガル語」の下に書籍タグはありません。そして、それは私が望む振る舞いです:その特定のタグとの関係を持つリンクの数が0より大きくない場合、タグは表示されません。
# tags
class Tag(models.Model):
title = models.CharField(max_length=50, blank=False, unique=True, error_messages={'unique':"Esta tag já existe."})
def __str__(self):
return self.title
# link instances
class Link(models.Model):
title = models.CharField(max_length=100, blank=False)
url = models.URLField(blank=False)
language = models.CharField(max_length=10, blank=False)
tag = models.ForeignKey(Tag, on_delete=models.CASCADE, null=False, blank=False)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse("link_detail", kwargs={'pk': self.pk})
そして、私のresources_list.htmlからの抜粋:これは私のmodels.pyである、と述べた
{% for tag in tags %}
<div style="display:inline;" class="col-lg-12 col-md-12 col-sm-12 col-xs-12">
<span></span>
<h3>{{tag.title}}</h3>
{% for link in links %}
{% if link.tag == tag %}
<a class="col-lg-10 col-md-10 col-xs-10 col-sm-10" style="margin-top 3px; margin-bottom: 3px; float: left;" href="{{link.url}}"><p>{{link.title|truncatechars_html:36|safe}}</p></a>
{% if user.is_authenticated %}
<a class="col-lg-1 col-md-1 col-xs-1 col-sm-1" style="float: right;" href="{% url 'link_detail' pk=link.pk %}"><span class="glyphicon glyphicon-cog"></span></a>
{% endif %}
{% endif %}
{% endfor %}
</div>
今までは、私はすべてのタグを表示することができたと問題は、コンテンツのないタグがまだ表示されていることです。
次のように私は私のviews.py関連の機能を書かれている:
def link_list_view(request):
links = Link.objects.all().order_by('title')
tags = Tag.objects.all().order_by('title')
tag_dict = {}
for tag in tags:
tag_rel = tags.get(title=tag)
tag_rel_entities = tag_rel.link_set.all()
tag_rel_entities_number = len(tag_rel_entities)
tag_dict[tag.title] = tag_rel_entities_number
return render(request, 'resources/resources_list.html', {'links':links, 'tags': tags})
は私のコードから関係ない部分を除去しました。ご覧のように、私はタグ名とその数の関係を持つ辞書を埋め込むことができました。 "Books"タグを含む3つのリンクがある場合、辞書は"Books": 3
となります。私は可能な解決策かもしれないと思っている何
は、以下の論理である。
For tag in tags
If links_with_relation_to_tag_number >= 1
<h3>{{tag.title}}</h3>
Endif
For link in links:
if link.tag == tag
...
そして私は辞書はテンプレートタグとタグを関連付けるのは良い方法かもしれないと思う、と確認する場合の数そのタグへのリンク関係は0より大きいが、今後どのように進めるか分からない。
ご協力いただきありがとうございます。他の詳細や修正が必要な場合は、私に知らせてください。ここに挿入します。