Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Django模板中显示多对多对象的子集_Django_Many To Many - Fatal编程技术网

在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如果这有效,请将其标记为已接受,并针对您的另一个问题提出一个新问题。这是相同的概念,只是略有不同。