我正在使用Django开发一个网站,在那里用户可以发送朋友信息 请求另一个用户,我的代码出现了一个错误。Queryset对象没有用户属性。根据我所附的图片,当我点击第一个用户的follow按钮时,所有按钮都会将文本更改为“cancel”,但当我点击第二个用户的按钮时,不会更改文本。我想当按钮点击按钮文本应该能够为每个用户改变
def home(request):
p = Profile.objects.exclude(user=request.user)
u = p.user
sent_request = FriendRequest.objects.filter(from_user=p.user)
button_status = 'none'
if p not in request.user.profile.friends.all()
button_status = 'not_friend'
if len(FriendRequest.objects.filter(from_uset=request.user).filter(to_user=p.user)) == 1:
button_status='add_request'
if len(FriendRequest.objects.filter(from_user=p.user).filter(to_user=request.user)) == 1:
button_status='cancel_request'
context = {'u':u, 'p':p, 'sent_request',:sent_request, 'button_status':button_status,}
return render(request, 'home.html', context)
{% for profile in p %}
{{ profile }}
{% if not request.user in u %}
{% if button_status == 'not_friend' %}
href = add url here
{% elif button_staus == 'cancel_request' %}
href = cancel request url here
{% endif %}
{% endif %}
{% endfor %}
#This only execute once on template, instead of twice (duplicate). How do I make this display twice in template?
{% for data in profile_and_button_status %}
{% data.0.user.username %}
#All codes here
{% endfor %}
{% if forloop.counter == 1 %}
{% for data in profile_and_button_status %}
#All codes here
{% data.0.user.username %}
{% endfor %}
{% endif %}
因为
.exclude()
会给你一个查询集。因此,您必须首先迭代该queryset
并从中获取所需的用户因为
queryset
它意味着list
我认为您必须传递特定用户的
zip
配置文件列表p
和按钮状态列表button_status
,如下所示然后,在模板中迭代
profile_and_button_status
,如下所示其他条件也是如此
删除好友:
相关问题 更多 >
编程相关推荐