2017-02-26 124 views
1

尝试使用的创建对象将数据插入到与外键的蟒蛇模型,得到一个“用户”的对象没有属性“__getitem__”有没有属性“的GetItem“用户”对象对创建对象

从django.db进口车型 从..loginRegistration_app.models

models.py

未来进口unicode_literals 导入用户

class PostManager(models.Manager): 
    error_list = [] 
    def post_in(self, postData, user_id): 
     if len(postData['post']) < 1: 
      context = {'status':0} 
      return context 
     else: 
      curr_user = User.objects.get(id = user_id) 
      # print curr_user.last_name 
      self.create(secrets = postData['post'], users_id = curr_user['id']) 

class Like(models.Model): 
    like = models.BooleanField() 
    users = models.ForeignKey(User, related_name = 'user_likes') 
    created_at = models.DateTimeField(auto_now_add = True) 
    upated_at = models.DateTimeField(auto_now = True) 

class Secret(models.Model): 
    secret = models.TextField(max_length = 1000) 
    likes = models.ForeignKey(Like, related_name = 'all_likes') 
    users = models.ForeignKey(User, related_name = 'user_secrets') 
    created_at = models.DateTimeField(auto_now_add = True) 
    upated_at = models.DateTimeField(auto_now = True) 

    objects = PostManager() 

views.py

from django.shortcuts import render, redirect 
from .models import Secret 
from django.contrib import messages 

def index(request): 
    if 'user_id' not in request.session: 
     return redirect('main:home') 
    # put query to display most recent secrets 

    return render(request, 'dojo_secrets_app/index.html') 

def post_it(request): 
    post_this = Secret.objects.post_in(request.POST, request.session['user_id']) 
    return redirect('secrets:home') 

错误:

TypeError at /secrets/post_it 
'User' object has no attribute '__getitem__' 

self.create(secrets = postData['post'], users_id = curr_user['id']) 

回答

1

id是用户实例的属性,而不是一些dict关键:

def post_in(self, postData, user_id): 
    # ... 
    curr_user = User.objects.get(id = user_id) 
    self.create(..., users_id = curr_user.id) # id is an attribute 

但由于user_id是一个属性您查看,为什么不使用它?

self.create(..., users_id = user_id) 

顺便说一句,你ForeignKey领域要真有奇异的名字('like', 'user'),复数名没有任何意义的语义...