如何为 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 过滤器

如何为 django 创建自定义管理面板

Django模板之自定义过滤器/标签/组件

模板继承and自定义模板标签和过滤器

Django Rest Framework - 如何为所有 ModelSerializer 字段创建自定义错误消息?

LWUIT,如何为表单标题创建自定义标签