django好友列表
时间: 2023-10-17 14:06:23 浏览: 80
在Django中实现好友列表可以通过以下步骤:
1. 创建一个名为`Friendship`(或类似的)的模型,用于表示用户之间的好友关系。这个模型可以包含两个外键字段,分别指向用户模型(例如`User`)。
```python
from django.db import models
from django.contrib.auth.models import User
class Friendship(models.Model):
user1 = models.ForeignKey(User, on_delete=models.CASCADE, related_name='friends')
user2 = models.ForeignKey(User, on_delete=models.CASCADE)
created_at = models.DateTimeField(auto_now_add=True)
class Meta:
unique_together = ('user1', 'user2')
```
2. 在你的用户模型中,添加一个方法来获取用户的好友列表。你可以在用户模型(例如`User`)中添加一个方法,返回该用户的所有好友。在这个方法中,你可以通过`Friendship`模型筛选出所有与该用户相关的好友关系,并返回相应的用户对象。
```python
from django.contrib.auth.models import AbstractUser
class User(AbstractUser):
# ...
def get_friends(self):
friendships = Friendship.objects.filter(user1=self)
friends = [friendship.user2 for friendship in friendships]
return friends
```
3. 在视图函数中或视图类中,使用用户模型的`get_friends()`方法来获取用户的好友列表,并将其传递给模板进行展示。
```python
from django.shortcuts import render
from django.contrib.auth.decorators import login_required
@login_required
def friend_list(request):
friends = request.user.get_friends()
return render(request, 'friend_list.html', {'friends': friends})
```
4. 创建一个友好的模板(例如`friend_list.html`),用于展示用户的好友列表。
```html
<h1>好友列表</h1>
<ul>
{% for friend in friends %}
<li>{{ friend.username }}</li>
{% empty %}
<li>你还没有好友。</li>
{% endfor %}
</ul>
```
这样,当用户登录并访问`friend_list`视图时,它将显示该用户的好友列表。你可以将该视图链接到你的URL配置中的相应URL上。
阅读全文