在Django模板中显示多对多对象的子集
这是我的模型的一部分:在Django模板中显示多对多对象的子集,django,many-to-many,Django,Many To Many,这是我的模型的一部分: class Character(models.Model): name = models.CharFied() class Issue(models.Model): character = models.ManyToManyField(Character, related_name="appearances", blank=True, null=True) 我想做的是,当你转到一个角色的页面时,它会显示该角色所处的所有问题 以下是我的视图的设置方式:
class Character(models.Model):
name = models.CharFied()
class Issue(models.Model):
character = models.ManyToManyField(Character, related_name="appearances", blank=True, null=True)
我想做的是,当你转到一个角色的页面时,它会显示该角色所处的所有问题
以下是我的视图的设置方式:
def character(request, character_slug):
character = get_object_or_404(Character, slug=character_slug)
return render_to_response('comics2/character_detail.html', {'character': character}, context_instance=RequestContext(request)
在模板中:
{{ character.name }}
工作
我试过这个:
class CharactersView(ListView):
context_object_name = "character_list"
template_name = "comics2/character_detail.html"
def get_queryset(self):
character = get_object_or_404(Character, slug=self.kwargs['character_slug'])
return Issue.objects.filter(character=character)
但是它不起作用
但是,在显示角色出现的所有问题的模板中,我将如何处理呢?例如:
Character Name
Issue #1
Issue #2,
etc.
我觉得这很简单,但我不明白。我在网上搜寻答案,但似乎找不到有用的东西。所以,让我知道发生了什么,我更喜欢婴儿谈话,可能还有实际的代码…谢谢 您正在寻找
由于设置了相关名称,否则,character.issue\u set.all
为默认值。还可以通过在视图中获取相关集,将问题添加到上下文中
完整示例:
models.py
class Character(models.Model):
name = models.CharField()
slug = models.SlugField()
def __unicode__(self):
return "%s" % self.name
class Issue(models.Model):
title = models.CharField()
volume = models.IntegerField()
character = models.ManyToManyField(Character, related_name="appearances", blank=True, null=True)
def get_absolute_url(self):
...
views.py
def character(request, character_slug):
character = get_object_or_404(Character, slug=character_slug)
issues = character.appearances.all()
context = {'character': character,
'issues':issues,}
return render_to_response('comics2/character_detail.html',
context_instance=RequestContext(request)
template.html
<h1>Appearances of {{ character }}<h1>
<table>
<thead>
<tr>
<th>Title</th>
<th>Volume</th>
</tr>
</thead>
<tbody>
{% for issue in issues %}
<tr>
<td><a href="{{ issue.get_absolute_url }}>{{ issue.title }}</a></td>
<td>{{ issue.volume }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{{code>character}的外观
标题
卷
{问题%中的问题为%s}
{{issue.volume}
{%endfor%}
您正在寻找的
由于设置了相关名称,否则,character.issue\u set.all
为默认值。还可以通过在视图中获取相关集,将问题添加到上下文中
完整示例:
models.py
class Character(models.Model):
name = models.CharField()
slug = models.SlugField()
def __unicode__(self):
return "%s" % self.name
class Issue(models.Model):
title = models.CharField()
volume = models.IntegerField()
character = models.ManyToManyField(Character, related_name="appearances", blank=True, null=True)
def get_absolute_url(self):
...
views.py
def character(request, character_slug):
character = get_object_or_404(Character, slug=character_slug)
issues = character.appearances.all()
context = {'character': character,
'issues':issues,}
return render_to_response('comics2/character_detail.html',
context_instance=RequestContext(request)
template.html
<h1>Appearances of {{ character }}<h1>
<table>
<thead>
<tr>
<th>Title</th>
<th>Volume</th>
</tr>
</thead>
<tbody>
{% for issue in issues %}
<tr>
<td><a href="{{ issue.get_absolute_url }}>{{ issue.title }}</a></td>
<td>{{ issue.volume }}</td>
</tr>
{% endfor %}
</tbody>
</table>
{{code>character}的外观
标题
卷
{问题%中的问题为%s}
{{issue.volume}
{%endfor%}
我尝试将其添加到模板中(包括缺少的“for”),但它没有显示任何内容。我的角色视图仍然是如上所述的“def character”。我还尝试添加{issue.title}}等,并尝试从issue_集中删除“_集”。@Aimz因为您使用的是相关的_名称参数,所以您的相关集是通过使用
character.appearancess来检索的。所有的
对您有用吗?相关名称的东西有用。非常感谢。下一次,我将不添加这么多相关名称。不过,对于我的创建者部分,我似乎遇到了一个问题。我将在顶部进行编辑,以便代码显示。@Aimz如果这样做有效,请将其标记为已接受,并针对您的其他问题提出新问题。这是相同的概念,只是略有不同。我尝试将其添加到模板中(包括缺少的“for”),但它不会显示任何内容。我的角色视图仍然是如上所述的“def character”。我还尝试添加{issue.title}}等,并尝试从issue_集中删除“_集”。@Aimz因为您使用的是相关的_名称参数,所以您的相关集是通过使用character.appearancess来检索的。所有的
对您有用吗?相关名称的东西有用。非常感谢。下一次,我将不添加这么多相关名称。不过,对于我的创建者部分,我似乎遇到了一个问题。我将在顶部进行编辑,以便代码显示。@Aimz如果这有效,请将其标记为已接受,并针对您的另一个问题提出一个新问题。这是相同的概念,只是略有不同。