我目前有一个"个人资料"显示已上载的特定用户信息的页面。目前它是通过
实现的objects.filter(user = request.user)
我试图找出如何允许a,因为缺乏更好的描述,一个朋友"查看其他人的个人资料。现在,发出请求的用户获取自己的信息。我相信我知道如何建立“朋友”的能力。另一个用户...我只是不知道如何显示另一个用户信息,因为到目前为止所有我一直在过滤的是" request.user"
答案 0 :(得分:1)
您可以使用Many-to-many relationships
执行此操作你的对象应该是这样的
class Profile(models.Model):
friends = models.ManyToManyField(Profile)
要检查目标个人资料是否属于您的朋友,您可以按照以下方式修改您的代码:
Profile.objects.filter(friends = request.user)
答案 1 :(得分:1)
我想分享一下如何在我的项目中实现这一点。这可能与我如何实现朋友关系有些具体,但我认为主要思想应该是相同的。
以下是view_profile
def view_profile(request, username):
if request.user.username == username:
return HttpResponseRedirect(reverse('accounts:profile'))
#get the user we are looking at
person = get_object_or_404(User, username=username)
#get the userprofile
person = person.userprofile
person_friend_object, person_created = Friend.objects.get_or_create(current_user=person)
user_friends = [friend for friend in person_friend_object.users.all()]
follower_count = len(user_friends)
friend = False
context = {
'person':person,
'friend':friend,
'follower_count':follower_count,
'user_friends':user_friends,
}
if request.user.is_authenticated():
friend_object, created = Friend.objects.get_or_create(current_user=request.user.userprofile)
friends = [friend for friend in friend_object.users.all()]
if person in friends:
friend = True
else:
friend = False
context['friend'] = friend
return render(request, 'users/user_profile_view.html', context)
然后,在模板中,您可以使用模板逻辑控制朋友可以看到给定用户的个人资料。这是一个基本的例子:
{% if not friend %}
<p>You are not friends with this user</p><button>Add friend</button>
{% else %}
<p>You are friends with this user. Here is information about this user...(here you can show data on the user through by accessing the `person` context variable)</p><button>Unfriend</button>
{% endif %}
所以一切都由friend
变量控制,该变量为True或False。
有很多方法可以做你所描述的,这只是我相信的一种方式。希望这对您的项目有所帮助。