如何在 Django 模板中使用 Django 模型对象?

我无法在 Django 模板中使用 Django 模型对象。我想在模板中使用模型用户进行迭代,然后使用该用户的 ActivityPeriod(model) 进行播放。请检查我的代码是否清晰:


这是我的代码:


views.py


from .models import User,ActivityPeriod


def call_response(request):

    user = User.objects.all()

    return render(request, "Test/list.html", {"users":user ,"activityperiod":ActivityPeriod})

测试/list.html


{% for user in users %}

    'real_name': {{ user.real_name}}},

    'activity_periods': {% with activity=activityperiod.objects.get(id =user) %}

    {{ activity.start_time }}

    {% endwith %}

{% endfor %}

但我收到一个错误: 无法解析余数:'(id' from 'activityperiod.objects.get(id'


什么是正确的方法?任何人都可以请与我分享。


慕尼黑8549860
浏览 71回答 3
3回答

MYYA

views.pydef call_response(request):user = User.objects.filter(user=request.user)activityperiod = activityperiod.objects.get(user=user)context={'user':user,'activityperiod':activityperiod}return render(request, "Test/list.html",context})测试/list.html'real_name': {{ user.real_name}}'activity_periods':{{ activityperiod.start_time }}

动漫人物

Django 模板不理解模型的过滤操作。这部分应该在视图中。activity=activityperiod.objects.get(id =user)在发送到模板之前,您应该准备好数据并对其进行操作(字典可能会对您有所帮助)。请记住,操作“User.objects.all()”的结果是一个列表。

慕标琳琳

你的问题表明你认为你可以像普通函数一样在模板中使用函数(即activityperiod.objects.get(...))。你不能,模板系统不是这样制作的(出于安全原因等)。你应该在你的模型中做类似的事情:def call_response(request):    # ! first() not "all()" (if > 1 user, you'll have problem)!    user = User.objects.first()    activityperiod = activityperiod.objects.get(user=user)    return render(request, "Test/list.html",                  {"users":user ,"activityperiod":activityperiod})
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python