Django if else 模板标签查询集不对
Django if else template tag queryset not right
我想在用户未关注项目时显示 "follow" 按钮,并在用户关注后更新按钮。
我尝试使用以下模板标签,但它总是返回 true。
这是人们可以关注的项目模型,下面包括当前关注此项目的关注者列表。
class Team(models.Model):
following = models.ManyToManyField(
settings.AUTH_USER_MODEL,
related_name='followers',
blank=True,
)
这些是我试过的模板标签,但总是 returns "Follow"。
{% if not request.user in user.followers.all %}
<div class="progress-stats">
<a href="{% url 'teams:follow' team.id %}">Follow</a>
</div>
{% endif %}
{% if request.user in user.followers.all %}
<div class="progress-stats">
<a href="{% url 'teams:unfollow' team.id %}">Unfollow</a>
</div>
{% endif %}
您想检查用户是否在团队 following
:
<div class="progress-stats">
{% if request.user in team.following.all %}
<a href="{% url 'teams:unfollow' team.id %}">Unfollow</a>
{% else %}
<a href="{% url 'teams:follow' team.id %}">Follow</a>
{% endif %}
</div>
就字段命名而言,这更有意义:
class Team(models.Model):
followers = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='teams', blank=True)
现在,可以通过 team.followers.all()
访问关注给定团队的用户,通过 user.teams.all()
.
访问给定用户的团队
尝试将 request.user 更改为仅用户。
request.user 存在于视图代码中。但是系统会自动向用户提供模板代码。
request.user 是 Null 或 None,我不确定是哪一个,但这基本上意味着任何时候您在查询中从模板中搜索它时,它都不会在那里。因此,不是 request.user 永远是真的。
编辑:此外,如果您从视图中明确向模板提供 'user',请尝试将其更改为其他内容。正如我上面所说,模板代码自动提供用户。它不提供 request.user。 Non-existing 变量,在大多数情况下,只会静静地失败,并且 return 其特定的预设值 data-type.
的适当默认值
我想在用户未关注项目时显示 "follow" 按钮,并在用户关注后更新按钮。
我尝试使用以下模板标签,但它总是返回 true。
这是人们可以关注的项目模型,下面包括当前关注此项目的关注者列表。
class Team(models.Model):
following = models.ManyToManyField(
settings.AUTH_USER_MODEL,
related_name='followers',
blank=True,
)
这些是我试过的模板标签,但总是 returns "Follow"。
{% if not request.user in user.followers.all %}
<div class="progress-stats">
<a href="{% url 'teams:follow' team.id %}">Follow</a>
</div>
{% endif %}
{% if request.user in user.followers.all %}
<div class="progress-stats">
<a href="{% url 'teams:unfollow' team.id %}">Unfollow</a>
</div>
{% endif %}
您想检查用户是否在团队 following
:
<div class="progress-stats">
{% if request.user in team.following.all %}
<a href="{% url 'teams:unfollow' team.id %}">Unfollow</a>
{% else %}
<a href="{% url 'teams:follow' team.id %}">Follow</a>
{% endif %}
</div>
就字段命名而言,这更有意义:
class Team(models.Model):
followers = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name='teams', blank=True)
现在,可以通过 team.followers.all()
访问关注给定团队的用户,通过 user.teams.all()
.
尝试将 request.user 更改为仅用户。
request.user 存在于视图代码中。但是系统会自动向用户提供模板代码。
request.user 是 Null 或 None,我不确定是哪一个,但这基本上意味着任何时候您在查询中从模板中搜索它时,它都不会在那里。因此,不是 request.user 永远是真的。
编辑:此外,如果您从视图中明确向模板提供 'user',请尝试将其更改为其他内容。正如我上面所说,模板代码自动提供用户。它不提供 request.user。 Non-existing 变量,在大多数情况下,只会静静地失败,并且 return 其特定的预设值 data-type.
的适当默认值