gpt4 book ai didi

python - “用户”对象在创建对象时没有属性 '__getitem__'

转载 作者:太空宇宙 更新时间:2023-11-03 15:36:51 25 4
gpt4 key购买 nike

尝试使用 create 对象将数据插入带有外键的 python 模型中,但获取的“User”对象没有属性“getitem

模型.py

future 导入unicode_literals 从 django.db 导入模型 从 ..loginRegistration_app.models 导入用户

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()

View .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'])

最佳答案

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是你 View 的一个属性,为什么不使用它呢?

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

顺便说一句,您的 ForeignKey 字段实际上应该具有单数名称('like'、'user'),复数名称在语义上没有意义......

关于python - “用户”对象在创建对象时没有属性 '__getitem__',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42464458/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com