Python 如何从多个字段中删除好友
我正在使用Django开发一个约会网站,在那里我可以添加和删除好友。对于如何删除/取消添加的用户,我有一点复杂。使用我尝试过的代码,我得到了以下错误:“无法查询”oghomwenoguns:必须是“Profile”实例Python 如何从多个字段中删除好友,python,django,Python,Django,我正在使用Django开发一个约会网站,在那里我可以添加和删除好友。对于如何删除/取消添加的用户,我有一点复杂。使用我尝试过的代码,我得到了以下错误:“无法查询”oghomwenoguns:必须是“Profile”实例 类配置文件(models.Model): user=models.OneToOneField(settings.AUTH\u user\u MODEL,on\u delete=models.CASCADE,blank=True,null=True) bio=models.Char
类配置文件(models.Model):
user=models.OneToOneField(settings.AUTH\u user\u MODEL,on\u delete=models.CASCADE,blank=True,null=True)
bio=models.CharField(最大长度=350,null=True,blank=True)
profile_pic=models.ImageField(上传_到='ProfilePicture/',default=“ProfilePicture/user img.png”,blank=True)
friends=models.ManyToManyField('Profile',blank=True)
date=models.DateTimeField(auto\u now\u add=True,null=True)
def删除朋友请求(请求,id):
我的朋友=获取对象或404(用户,id=id)
frequest=Profile.objects.filter(friends=my_friend)
frequest.delete()
返回HttpResponseRedirect(“/”)
如果您想从请求.user.friends
中删除朋友我的朋友
应该是这样的:
def delete_friend_request(request, id):
user_profile = request.user.profile
friend_profile = get_object_or_404(Profile,id=id) # Profile instance has the same id as user
user_profile.friends.remove(friend_profile) # A removes B
friend_profile.friends.remove(user_profile) # B removes A
return HttpResponseRedirect('/')
您只需要将其从好友列表中删除,而不是删除用户实例
class Profile(models.Model):
user = models.OneToOneField(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,blank=True,null=True)
bio = models.CharField(max_length=350, null=True,blank=True)
profile_pic = models.ImageField(upload_to='ProfilePicture/', default="ProfilePicture/user-img.png", blank=True)
friends = models.ManyToManyField('Profile', blank=True)
date = models.DateTimeField(auto_now_add=True, null= True)
def delete_friend_request(request, id):
my_friend = get_object_or_404(User,id=id)
frequest = Profile.objects.filter(friends=my_friend)
frequest.delete()
return HttpResponseRedirect('/')
<a href="{% url 'site:delete_friend_request' u.id %}" class="btn btn-primary btn-lg waves-effect font-weight-bold text-capitalize ml-0 mt-2" style="font-size:14px;padding:10px;width:40%;">Unfriend</a>
注意:确保所有用户
实例都有配置文件
可以使用以下命令序列更新当前iNtance:
python manage.py shell
from django.contrib.auth.models import User
from app_name.models import * # app_name must be the name of your application
user_with_no_profile = User.objects.filter(profile__isnull=True)
for u in user_with_no_profile:
u.profile = Profile()
u.save()
查看您的示例,请确保按如下所示绘制html,以便只显示用户朋友的id
{% for u in request.user.friends.all %}
<a href="{% url 'site:delete_friend_request' u.id %}" class="btn btn-primary btn-lg waves-effect font-weight-bold text-capitalize ml-0 mt-2" style="font-size:14px;padding:10px;width:40%;">Unfriend</a>
{% endfor %}
{request.user.friends.all%}
{%endfor%}
编辑:现在两个朋友都被删除。您想从request.user.friends
?@John中删除my\u friend
。。。对my_friend是我要删除的用户的id。尝试这样做,我得到了这个消息“无法查询”oghomwenoguns:必须是“Profile”实例。“oghomwenoguns”是我的朋友。我怎样才能把它取下来?@John.谢谢你。我认为这是有效的。但当我点击链接时,我发现页面没有找到404@GistDomBlog确保所有user
实例都有一个profile
instance createdi我不明白,我是django的新手。是否有一种方法可以让我了解如何确保所有用户实例都创建了一个概要文件实例。我能够完成添加到好友并接受好友请求。我能够从列表中删除好友,但问题是,如果两个用户成为好友,当A删除/取消好友B时,B仍然是A的好友。如何从多个字段中删除这两个好友?我的意思是,当A删除/取消朋友B时,A和B将不再是朋友。@GistDomBlog现在两个朋友都被删除了。