我在将一些字符串附加到数据库中的列表时遇到问题 请帮帮我
这是我的models.py
class friendList(models.TextField):
myFriend = []
class friend(models.Model):
username = models.CharField(max_length="30")
friends = friendList().myFriend
这是view.py
def addfriend(request):
try:
user = request.session['user']
if request.method == 'POST':
friend.objects.filter(username = user.username)[0].friends.append(request.POST['user_name'])
return HttpResponse("ok he/she is your friend now!!")
except:
return render(request, 'login.html', {'error':"you are not logged in"})
答案 0 :(得分:2)
您需要修复模型。由于朋友可以拥有许多朋友,每个朋友都是Friend
类型的对象,因此您可以将ForeignKey
添加到同一模型中:
class Friend(models.Model):
username = models.CharField(max_length="30")
friends = models.ForeignKey('self')
Python中的约定是为类名设置InitialCaps(也称为CamelCase)
现在,在您看来:
from django.contrib import messages
from django.shortcuts import redirect
from django.contrib.auth.decorators import login_required
@login_required
def addfriend(request):
if request.method == 'POST':
the_user = Friend.objects.get(username=request.user.username)
the_friend = Friend.objects.get(username=request.POST['user_name'])
the_user.friends_set.add(the_friend)
messages.add_message(request, messages.INFO, 'Friend added!')
return redirect('/index')
else:
messages.add_message(request, messages.ERROR, 'No friend selected!')
return redirect('/index')
对于POST
个请求,您应该始终重定向。在这里,我使用redirect
shortcut将用户重定向回索引页面(您可以更改URL以将其重定向到其他任何位置)。
Django提供了一个messages framework,用于向用户显示消息;文档将向您展示如何向模板添加代码以显示消息。
最后,login_required
decorator是一种确保只有用户登录才能访问视图的方法。它是内置身份验证框架的一部分。