Python django基于外键更改模板中的某些内容
我知道这很基本,但我不知道如何解决我的问题。Python django基于外键更改模板中的某些内容,python,django,templates,foreign-keys,Python,Django,Templates,Foreign Keys,我知道这很基本,但我不知道如何解决我的问题。 我有一个这样的模型: class Follow(models.Model): followed = models.ForeignKey(User, related_name='followed') follower = models.ForeignKey(User, related_name='followers') {% for user in users %} {% if user.followers.filter(fo
我有一个这样的模型:
class Follow(models.Model):
followed = models.ForeignKey(User, related_name='followed')
follower = models.ForeignKey(User, related_name='followers')
{% for user in users %}
{% if user.followers.filter(follower=request.user) %}
I'm following you !
{% else %}
I'm not following you
{% endif %}
{% endfor %}
我的看法是:
def usersList(request):
users = User.objects.all()
return render(request, 'blog/membres.html', {'users': users})
以下是我想在模板中执行的操作:
{% for user in users %}
{% if request.user in user.followers.all %}
I'm following you !
{% else %}
I'm not following you
{% endif %}
{% endfor %}
{% if user in relations %}
I'm not following you!
{% else %}
I'm following you !
{% endif %}
但它不起作用。我想我必须这样做:
class Follow(models.Model):
followed = models.ForeignKey(User, related_name='followed')
follower = models.ForeignKey(User, related_name='followers')
{% for user in users %}
{% if user.followers.filter(follower=request.user) %}
I'm following you !
{% else %}
I'm not following you
{% endif %}
{% endfor %}
您必须将
用户
对象正确传递到模板
def home(request):
users = User.objects.all()
return render(request, 'pages/test.html', {'users':users})
HTML逻辑是正确的,它将完美地工作…所以我找到了一种绕过我的问题的方法 我将此方法添加到我的以下模型中:
def getListFollowed(self, user):
relations = Follow.objects.filter(follower=user)
liste = []
for relation in relations:
liste.append(relation.followed.username)
return liste
我这样改变我的观点:
def membres(request):
users = User.objects.all()
f = Follow()
relations = f.getListFollowed(request.user)
return render(request, 'blog/membres.html', locals())
我在我的模板中这样做:
{% for user in users %}
{% if request.user in user.followers.all %}
I'm following you !
{% else %}
I'm not following you
{% endif %}
{% endfor %}
{% if user in relations %}
I'm not following you!
{% else %}
I'm following you !
{% endif %}
我希望in可以帮助一些其他可能有与我相同问题的人尝试
user.followers.all()
@NamanSogani:在模板中,可调用项不需要()
。什么部分不起作用?它会多次打印“我不在跟踪你”吗?所以我已经将用户对象传递给模板了。这不是因为我必须检查:if user.followers.filter(follower=request.user)类似this@BoumTAC不,这不起作用。@BoumTAC为什么它在你这边不起作用。。。它在我的本地工作得很好。。。