python - 接受后存储好友请求(在数据库中)
问题描述
我正在构建一个社交媒体应用程序,我试图在接受或拒绝后将好友请求存储在数据库中。
我正在尝试做的事情:-
当向管理员user_1
发送好友请求时,它会存储直到接受或拒绝。在接受或拒绝后将其从数据库中删除。但我想永久存储请求。所以我可以看到所有发送或接收的请求。user_2
sent or received friend requests
request.user
模型.py
class FriendRequest(models.Model):
to_user = models.ForeignKey(settings.AUTH_USER_MODEL,related_name='to_user',on_delete=models.CASCADE)
from_user = models.ForeignKey(settings.AUTH_USER_MODEL,related_name='from_user',on_delete=models.CASCADE)
视图.py
def send_friend_request(request,user_id):
user = get_object_or_404(User,id=user_id)
frequest, created = FriendRequest.objects.get_or_create(from_user=request.user,to_user=user)
return redirect('friends',user_id=user_id)
def accept_friend_request(request,user_id):
user1 = frequest.to_user
user2 = from_user
from_user = get_object_or_404(User,id=user_id)
frequest = FriendRequest.objects.filter(from_user=from_user,to_user=request.user).first()
user1.profile.friends.add(user2.profile)
user2.profile.friends.add(user1.profile)
if(FriendRequest.objects.filter(from_user=request.user,to_user=from_user).first()):
request_rev = FriendRequest.objects.filter(from_user=request.user,to_user=from_user).first()
request_rev.delete()
frequest.delete()
return redirect('friends',user_id=user_id)
我尝试了什么:-
我也尝试过在其中添加另一个实例,FriendRequest Model
但它没有保存在管理员中。
我不知道,我该怎么做。
任何帮助,将不胜感激。
先感谢您。
解决方案
如果您想永久存储好友请求,您可以在 FriendRequest 模型中添加一个新字段。新字段可以存储好友请求的状态。您可以给它一个默认值“待处理”或“已发送”或“已接收”,因为当发送好友请求时,它处于待处理状态。如果好友请求被接受,您可以将好友请求的状态更新为“已接受”,如果好友请求被拒绝,您可以将其状态更新为“已拒绝”。
你models.py
现在看起来像:
class FriendRequest(models.Model):
to_user = models.ForeignKey(settings.AUTH_USER_MODEL,related_name='to_user',on_delete=models.CASCADE)
from_user = models.ForeignKey(settings.AUTH_USER_MODEL,related_name='from_user',on_delete=models.CASCADE)
PENDING = 'p'
ACCEPTED = 'a'
REJECTED = 'r'
STATUS_CHOICES = [
(PENDING, 'Pending'),
(ACCEPTED, 'Accepted'),
(REJECTED, 'Rejected')
]
status = models.CharField(max_length=1, choices=STATUS_CHOICES, default=PENDING)
如果您的 FriendRequests 模型已在 admin 中注册,它也会显示在 admin 中。
在您accept_friend_request
看来,您可以简单地将其状态更新为“a”,即“已接受”,而不是从数据库中删除好友请求条目。
推荐阅读
- angular - 如何在延迟加载中使用组件和angular4中的entryComponents
- xml - 我想从命令栏 Excel (customUI) 的审阅选项卡中隐藏(不禁用)“保护工作簿”
- ruby-on-rails - Rails Admin 动态字段
- spring-mvc - 使用“forward:/”时如何设置参数
- github - 在 shinyapp.io 上部署闪亮的应用程序,并在私人组织仓库中使用包
- python - 熊猫用日期填充列
- python - ModuleNotFoundError:没有名为“user_agent”的模块
- angularjs - NPM 适用于命令行,但不适用于 Jenkins
- r - 修改重叠 geom_boxplot 宽度以跨越用于计算的整个 x 范围
- hl7-fhir - 提取单个 FHIR 资源的功能