我在访问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中?
我们在一个会话中一起调试了它。
问题是firstname
和surname
实际上是空的。没有空的是该模型从AbstractUser
继承的first_name
和last_name
。
从模型中删除firstname
和surname
并使用其他两个属性解决了这个问题。