我试图在Django ListView中显示一个名为教师的多个字段的值。
目前我的模型看起来像这样:
class Classform(models.Model):
# Fields
name = models.CharField(max_length=255)
slug = extension_fields.AutoSlugField(populate_from='name', blank=True)
created = models.DateTimeField(auto_now_add=True, editable=False)
last_updated = models.DateTimeField(auto_now=True, editable=False)
# Relationship Fields
school = models.ForeignKey('eduly.School', default=1)
teachers = models.ManyToManyField('eduly.Teacher', )
我的ListView看起来像这样:
class ClassformListView(GroupRequiredMixin, ListView):
model = Classform
group_required = [u"school_admin"]
login_url = "/login/"
raise_exception = True
我的列表视图模板如下所示:
<tr>
<td>{{object.pk}}</td>
<td><a href="{{object.get_absolute_url}}">{{object}}</a></td>
<td>{{ object.name }}</td>
<td>{{ object.teachers }}</td>
<td>{{ object.created }}</td>
<td>{{ object.last_updated }}</td>
</tr>
当此代码运行时,object.teachers
的显示值为appname.Teacher.None
我注意到Django创建了一个名为appname_classform
的表,还有一个名为&#39; appname_classform_teachers&#39; (大概是为了许多领域),但我不确定如何更改object.teachers
以获得教师的名字。 &#39; appname_classform_teachers&#39;包含app name_teachers表中教师的有效条目。
答案 0 :(得分:1)
使用object.teachers.all
来获取实际的查询集。
- 编辑 - 以自定义方式呈现这些:
{% for objs_teacher in object.teachers.all %}
<p>{{ objs_teacher.first_name }}</p>
<p>{{ objs_teacher.last_name }}</p>
...
{% endfor %}
您可以访问循环中的不确定字段,使其看起来如您所愿。