如何为 Django 对象创建自定义过滤器标签?
Posted
技术标签:
【中文标题】如何为 Django 对象创建自定义过滤器标签?【英文标题】:How to create a custom filter tag for a Django object? 【发布时间】:2020-11-07 16:31:11 【问题描述】:我有一个名为 Profile 的模型。 我想根据这个想法创建一个自定义过滤器标签: Profile.objects.filter(user=request.user)
然后我可以在模板中使用这个过滤器。 只需完成此功能: `
from django import template
register = template.Library()
from ..models import Profile
@register......
def filter_profile():
....
然后如何从模板中使用它。
谢谢。
【问题讨论】:
【参考方案1】:假设您拥有带有用户一对一字段的 Profile 模型(这是最可能的情况),您根本不需要创建这样的过滤器。您可以直接访问模板中的相关模型。这是一个例子:
型号:
class Profile(models.Model):
...
user = models.OneToOneField(User, ...)
...
模板:
request.user.profile
【讨论】:
【参考方案2】:如果要显示属于当前用户的项目,可以这样做:
% if user == request.user%
<!-- Do something -->
% endif %
这将只显示与当前用户相关的项目。
【讨论】:
以上是关于如何为 Django 对象创建自定义过滤器标签?的主要内容,如果未能解决你的问题,请参考以下文章
如何为来自相关模型的聚合数据实现自定义 django 过滤器