使用django将一些字符串追加到数据库中的列表中
我在数据库的列表中添加字符串时遇到问题 请帮帮我 这是我的模特使用django将一些字符串追加到数据库中的列表中,django,django-models,django-views,Django,Django Models,Django Views,我在数据库的列表中添加字符串时遇到问题 请帮帮我 这是我的模特 class friendList(models.TextField): myFriend = [] class friend(models.Model): username = models.CharField(max_length="30") friends = friendList().myFriend 这是view.py def addfriend(request): try:
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"})
你需要修理你的模型。由于一个朋友可以有许多朋友,每个朋友都是类型为
friend
的对象,因此您可以向同一模型添加:
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
请求,您应该始终重定向。在这里,我使用将用户重定向回索引页面(您可以更改URL以将其重定向到其他任何位置)
Django提供了一个我用来向用户显示消息的窗口;文档将向您展示如何向模板中添加代码以显示消息
最后,是一种确保视图只有在用户登录时才可访问的方法。它是内置身份验证框架的一部分。我认为您的所有好友实例(“好友”必须是大写)都在共享fieldList类的类变量myFirned。我使用了这个print friend.objects.filter(username=user.username)[0]。friends在返回HttpResponse之前是可以的,但在我的数据库中它不会保存