【发布时间】:2019-01-21 15:22:15
【问题描述】:
我用 Profile 模型扩展了 Django 的用户模型:
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, related_name='profile')
date_of_birth = models.DateField()
address = models.CharField(max_length=300)
postcode = models.CharField(max_length=15)
然后,我通过这个视图将这些数据传递到模板中:
def profile(request):
args = {'user': request.user}
return render(request, 'users/profile.html', args)
然后我可以在模板中单独访问 Profile 模型的每个字段:
<p>Your DOB is: {{ user.profile.date_of_birth }}</p>
但是,我想用一个 for 循环来表示:
{%for field in Profile model %}
<p>{{field name}} = {{field value}}
{% endfor %}
但是我尝试了很多不同的方法,但没有一个有效,例如
{% for field in user.profile.all %}
<p>{{ field }}</p>
{% endfor %}
(这会编译,但在运行模板时为空)
【问题讨论】:
-
它不会“编译”,模板错误通常会被忽略,你的
Profile对象没有all属性。请参阅重复的问题。您将无法直接在模板中执行此操作,但应该能够使用给定的解决方案在上下文中传递字段名称和字段值的列表。
标签: python django django-models django-templates django-views