2017-02-21 28 views
0

測試其期望得到所有用戶列表的GET請求時,我下面有點過時tutorialand我得到一個錯誤:「查詢集」對象有沒有屬性「追加」

'QuerySet' object has no attribute 'append' 

下面是用戶配置模式。

class UserProfile(models.Model): 
    user = models.OneToOneField(User) 
    nickname = models.CharField(max_length = 128) 
    comment = models.TextField() 
    country = models.CharField(max_length = 128, blank = True) 
    url = models.CharField(max_length = 128, blank = True) 
    ignores = models.ManyToManyField(User, related_name = 'ignore_set', blank = True, null = True) 

    def serialize(self): 
     data = { 
     'user':self.user_id, 
     'username':self.user.username, 
     'nickname':self.nickname, 
     'comment':self.comment, 
     'country':self.country, 
     'url':self.url, 
     'ignores':[], 
     } 
     return data 
下面

是view.py(請參閱API /用戶/列表

def user_view(request, method): 
    # api/user/create: api that creating new account. 
    if method == 'create' and request.method == 'POST': 
     ... 
    #api/user/update: api that update user's oldpassword with new one 
    elif method == 'update' and request.method == 'POST': 
     ... 
    elif method == 'list': 
     users = UserProfile.objects.all() 
     return toJSON(serial(users)) 
    else: 
     return toJSON({'status':'bad request'},400) 

我想下面的功能序列化是問題的根源..但不知道如何解決它..

def serial(objs): 
    serialized = [] 
    for obj in objs: 
     objs.append(obj.serialize()) 
    return serialized 

def toJSON(objs, status=200): 
    j = json.dumps(objs, ensure_ascii=False) 
    return HttpResponse(j, status=status, content_type='application/json; charset=utf-8') 

回答

0

你的串行功能被附加到錯誤的東西(objs而不是serialized

def serial(objs): 
    serialized = [] 
    for obj in objs: 
     objs.append(obj.serialize()) 
    return serialized 

應該

def serial(objs): 
    serialized = [] 
    for obj in objs: 
     serialized.append(obj.serialize()) 
    return serialized 
+0

注意:您可能希望找到一個更好的教程(Django的官員是相當不錯的),然後也許看看Django的REST框架 – Sayse

+1

這確實是一個基本的錯誤..是的,我一定會採取django官方教程,非常感謝您的幫助。 –

相關問題