“无”显示对象名称Django

时间:2015-08-21 16:19:42

标签: python django django-models django-templates django-views

我有这样一个错误:在我的模型中有两个:主题和部分。在剖面模型中,有一个字段可以保存本节中的每个主题。

class Section(models.Model):
    """Model for a section."""
    ename = models.CharField(max_length=255)
    name = models.CharField(max_length=255)
    definition = models.CharField(max_length=500)
    picture = models.ImageField(upload_to="physics/section", blank=True)
    subjects = models.ManyToManyField("Subject")

    def __str__(self):
        return self.name


class Subject(models.Model):
    """Model for a subject in section."""
    ename = models.CharField(max_length=255)
    name = models.CharField(max_length=255)
    definition = models.CharField(max_length=500)
    content = models.TextField()

    def __str__(self):
        return self.name

我试图在该部分中展示每个主题。我的观点和模板如下: 的观点:

def section(request, section_name):
    section = get_object_or_404(Section, ename=section_name)
    return render(request, 'section.html', {'section': section})

模板:

{% extends 'base.html' %}
{% block content %}
{{ section.name }}
{{ section.subjects }}
{% endblock content %}

但是“无”显示在本节的页面中。它看起来如此:

(这里是真实的主题名称)Physics.Subject.None

有谁能说出错了?谢谢你提前注意。

1 个答案:

答案 0 :(得分:3)

由于您使用ManyToManyField来引用您的Section,因此您需要访问模板中的该设置,然后从中提取信息。

这样的事情应该足够了:

{% extends 'base.html' %}
{% block content %}
{{ section.name }}
{% for subject in section.subjects_set.all %}
{{ subject.name }}
{% endfor %}
{% endblock content %}