【问题标题】:Django boolean filter elements in template模板中的Django布尔过滤器元素
【发布时间】:2020-06-30 10:37:10
【问题描述】:

我有一个 Django 模板,我可以在其中进行如下查询:

{% for post in user.post_auctions_set.all %}

现在对我来说,我只想显示没有布尔素数 = True 的帖子元素。 我遇到了模板标签,但从未真正使用过它们。 能给我一个关于如何设置过滤器的提示?

views.py

def pae(request, pk=None):
    if pk:
        user = get_user_model().objects.get(pk=pk)
    else:
        user = request.user
    args = {'user': user}
    return render(request, 'App/pae.html', args)

models.py

class Post_Auctions(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    author = models.ForeignKey(User, on_delete=models.CASCADE)
    ...
    prime = models.BooleanField(verbose_name="Prime", default=False, editable=True)

提前致谢

【问题讨论】:

  • 可以分享模型和视图吗?
  • 有一个Prefetch 对象,您可以提供与用户对象的过滤关系。
  • 刚刚添加了视图和模型sn-p。我猜从未使用过 Prefetch 对象。任何提示从哪里开始以及它是如何工作的?

标签: python django templatetags


【解决方案1】:

你可以使用 if clause 形式的内置 django 模板标签集:

{% for post in user.post_auctions_set.all %}
    {%  if post.prime %}
    ...

注意:这可能不是最好的解决方案,但我唯一能想到的就知道了,因为我现在对 Django 不太熟悉。至少,我在某处读过的内容是尽可能避免使用这种模板逻辑。

【讨论】:

  • 基本上这是一个解决方案。但是我不得不说,如果你的模板超过 300 行,那在 A** 中会很痛苦,因为一切都被无休止的 if/else/for 等语句所包裹。但就目前而言,这似乎是最有效的方法。谢谢
猜你喜欢
  • 2020-04-09
  • 1970-01-01
  • 1970-01-01
  • 2022-10-05
  • 2011-03-03
  • 2015-11-29
  • 1970-01-01
  • 2012-06-03
  • 1970-01-01
相关资源
最近更新 更多