对象不可编写脚本意味着啥?

Posted

技术标签:

【中文标题】对象不可编写脚本意味着啥?【英文标题】:What does it mean for an object to be unscriptable?对象不可编写脚本意味着什么? 【发布时间】:2011-06-04 19:09:05 【问题描述】:

我不知道这里发生了什么...我只想检查模型字段的值,然后相应地对其进行更新...感谢任何帮助或见解!

型号:

class UserProfile(models.Model):
    user = models.ForeignKey(User, unique=True)
    beta = models.CharField(max_length=1, blank=True, null=True)

查看:

from internal.accounts.models import UserProfile
from django.contrib.auth.models import User
@login_required    
def beta_testers(request):
    user = User.objects.get(username=request.user.username)
    user_profile = user.get_profile()

    count = UserProfile.objects.filter(beta='1').count()

    if count < 50 and not user_profile['beta']:
        user_profile['beta'] = '1'
        user_profile.save()

错误:

TypeError at /utilities/beta-signup/
'UserProfile' object is unsubscriptable
Request Method: GET
Request URL:    http://localhost/utilities/beta-signup/?x=1&y=15
Django Version: 1.2.1
Exception Type: TypeError
Exception Value:    
'UserProfile' object is unsubscriptable
Exception Location: C:/django\internal\cms_helper\views.py in beta_testers, line 284

【问题讨论】:

In Python, what does it mean if an object is subscriptable or not?的可能重复 【参考方案1】:

错误是“不可订阅”。您的 user_profile 对象不是字典。使用user_profile.beta,而不是user_profile['beta']

【讨论】:

哦,是的,一定是这个。谢谢。 为什么会这样呢?有没有办法让 Django 提供该功能?【参考方案2】:

或者,您可以使用带有getattr 的字符串:

getattr(user_profile, 'beta', False)

False 是默认值;在您的情况下,它可以检查该值是否已设置。我发现这很有帮助,所以我想我会发布这个解决方案,即使这个问题是几年前提出的。 :)

【讨论】:

【参考方案3】:

方法一

model_name.object.filter(column_name='value').last

方法二

当您尝试在文本字段中插入模型对象时会发生此错误

【讨论】:

以上是关于对象不可编写脚本意味着啥?的主要内容,如果未能解决你的问题,请参考以下文章

TensorFlow 对象检测 API - 对象检测 api 中的损失意味着啥?

如果 Python 对象是“可下标的”,这意味着啥?

对象可腌制(或可腌制)意味着啥?

python是一种啥类型的编程语言

在打字稿中,拥有像这样“ [x: string]: any ”这样的对象属性意味着啥?

C++,const对象的成员不可修改,但const对象通过指针维护的对象却可以修改,啥意思?望高手予以指点!