我在一个网站上工作,用户可以发送朋友请求,接受请求,取消请求。我有一个错误AttributeError对象没有属性“delete”。当我取消好友请求时会发生这种情况。这是我尝试的代码:
型号:
class FriendRequest(models.Model):
to_user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE, related_name='to_user')
from_user = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE, related_name='from_user')
date = models.DateTimeField(auto_now_add=True, null= True)
class Meta:
verbose_name = 'Friend request'
verbose_name_plural = 'Friend requests'
ordering = ['-date']
def __str__(self):
return "from {}, to {}".format(self.from_user.username, self.to_user.username)
Views.py:
@login_required
def cancel_friend_request_view(request, id):
user = get_object_or_404(User, id=id)
frequest = FriendRequest.objects.filter(from_user=request.user, to_user=user).first()
frequest.delete()
print(frequest)
return HttpResponseRedirect(request.META.get('HTTP_REFERER'))
最好通过FriendRequest的ID,完全跳过这段代码:
你可以这样做:
还考虑不完全删除数据库中的数据,而是使用删除的标志来保持整个软件的行为历史。
我这样解决了它(我不知道这是否是最好的方法,但它起了作用),删除。first():
如果找不到匹配的行,
.first()
将返回None
https://docs.djangoproject.com/en/3.0/ref/models/querysets/#first
[编辑]您需要处理
None
-case,上面的解释应该已经清楚了。此外,我建议学习使用python调试器检查变量类型,而不是依赖调试打印相关问题 更多 >
编程相关推荐