在模板中我试图做这样的事情:
{{ request.user.profile.following.all.values_list }}
我明白了
<QuerySet [(7, 2, 1)]>
,但我想得到
<QuerySet [2]>
就像在 Django values_list 中一样。
例如:Follow.objects.filter(follow_by=self.request.user.profile).values_list('follow_to', flat=True)
我可以在模板中传递这样的参数吗?
最佳答案
Can I pass argument like this in template?
否。 Django 模板引擎故意限制了这一点,因为这是属于 View 的逻辑。例如:
from django.contrib.auth.decorators import login_required
@login_required
def my_view(request):
following = request.user.profile.following.values_list('follow_to', flat=True)
return render(
request,
'<i>some_template.html</i>',
{<b>'following': following</b>}
)
然后你可以渲染它:
{{ following }}
也就是说,使用 .values_list(…)
[Django-doc]通常是一种反模式,因为它侵 eclipse 了模型层。因此它与 primitive obsession antipattern [refactoring.guru] 有关.
关于Django 模板 : How to use values/values_list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64306193/