Django - 检查列表是不是包含模板中的某些内容

Posted

技术标签:

【中文标题】Django - 检查列表是不是包含模板中的某些内容【英文标题】:Django - check if list contains something in a templateDjango - 检查列表是否包含模板中的某些内容 【发布时间】:2011-06-20 09:49:12 【问题描述】:

我正在尝试检查一个项目是否在模板内的列表(集合)中。

我在这里找到了这个问题: Is it possible, in a django template, to check if an object is contained in a list

但是解决方案对我不起作用。

我正在尝试这个:

% if trip in request.user.trip_set.all %

其中trip是Trip的一个实例, 用户是用户, Trip 有一个 ManyToManyField,通过 TripReservation 将其连接到 User

class TripReservation(models.Model):
    user = models.ForeignKey(User)
    trip = models.ForeignKey(Trip)

class Trip(models.Model):
    members = models.ManyToManyField(User,blank=True,null=True,through='TripReservation')

【问题讨论】:

你使用的是什么版本的 Django?这应该可以在最新版本中使用。 我使用的是 Django 1.2。我认为这是因为那是一个查询集 【参考方案1】:

request.user.trip_set.all 不是一个列表,而是一个查询集。我认为这是你的问题的原因。您可以尝试使用 dictsort 模板过滤器将其更改为列表。

% if trip in request.user.trip_set.all|dictsort:"id" %

【讨论】:

那行不通。我不认为 dictsort 用于将查询集转换为列表。还有其他方法吗?

以上是关于Django - 检查列表是不是包含模板中的某些内容的主要内容,如果未能解决你的问题,请参考以下文章

检查列表 django 模板中是不是存在

在 Django 中,是不是可以从包含标记内的父模板上下文访问当前用户会话?

Django模板 - 查找列表中的至少一项是不是出现在其他列表中

检查列表是不是包含与某些东西不同的元素[重复]

检查图像是不是存在于 Django 模板中

Django模板ifequal标签