为什么 django 模板中只有一些上下文数据可用?

Why is only some context data available in django template?

我无法访问 Django 模板中的某些上下文数据,这可能是由于我的基本误解所致。请参阅下面的缩写代码。我的观点是:

class UserCourseListView(LoginRequiredMixin, generic.ListView):
    
    model = CustomUser    
    template_name = 'account/course/list.html'
    context_object_name = 'puser_course_list'
    
    def get_queryset(self):        
        return CustomUser.objects.filter(username=self.request.user.username)

我的模型是:


class CustomUser(AbstractUser):
    email = models.EmailField(max_length=254, blank=False,)
    course = models.ManyToManyField(Course, related_name="course", blank=True)
    firstname = models.TextField(max_length=254, blank=True )
    surname = models.TextField(max_length=254, blank=True )
    nickname = models.TextField(max_length=254, blank=True )
   

    def __str__(self):
        return str(self.id)
    def get_absolute_url(self):
        return reverse('patient_user_detail', args=[str(self.id)])

模板是:

{% for pcourse in puser_course_list %}    
          
    <dt>{{ pcourse.courses_joined.all }}</dt> # displayed in browser
    <dt>{{ pcourse.id }}</dt> # displayed in browser
    <dt>{{ pcourse.username }}</dt> # displayed in browser
    <dt>{{ pcourse.email }}</dt> # displayed in browser
    <dt>{{ pcourse.firstname }}</dt> # not displayed in browser
    <dt>{{ pcourse.surname }}</dt> # not displayed in browser

{% endfor %}

我可以访问用户 ID、用户名、电子邮件并从相关模型(使用相关名称 'courses_joined')检索查询集,但无法检索名字和姓氏?任何想法或帮助将不胜感激。我假设在这种情况下不需要上下文处理器,因为所有数据都应该在 context_object?

我们在一个会话中一起调试了这个。

问题是 firstnamesurname 实际上是空的。 不空的是 first_namelast_name 模型继承自 AbstractUser

从模型中删除 firstnamesurname 并使用其他两个属性解决了这个问题。