使用django将一些字符串附加到数据库中的列表中

时间:2013-07-03 12:10:43

标签: django django-models django-views

我在将一些字符串附加到数据库中的列表时遇到问题 请帮帮我

这是我的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"})

1 个答案:

答案 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是一种确保只有用户登录才能访问视图的方法。它是内置身份验证框架的一部分。