我希望在用户不关注项目时显示“关注”按钮,并在用户关注该按钮后更新按钮。
我尝试使用以下模板标记,但它始终返回true。
以下是人们可以关注的项目模型,其中包括当前关注此项目的关注者列表。
class Team(models.Model):
following = models.ManyToManyField(
settings.AUTH_USER_MODEL,
related_name='followers',
blank=True,
)
这些是我尝试过的模板标签,但它总是返回“关注”。
{% 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 %}
答案 0 :(得分:1)
您想要检查用户是否在团队中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()
访问关注特定团队的用户。
答案 1 :(得分:0)
尝试将request.user更改为仅用户。
request.user存在于视图代码中。然而,系统会自动向用户提供模板代码。
request.user是Null还是None,我不确定是哪一个,但它基本上意味着无论何时在查询中搜索它,从模板中都不会存在。因此,不要求任何事情都是真的。
修改:此外,如果您要提供用户&#39;从视图中明确地模板,尝试将其更改为其他内容。如上所述,模板代码自动为用户提供。它不提供request.user。在大多数情况下,不存在的变量只会以静默方式失败,并为其特定的预设数据类型返回适当的默认值。