What does it mean for an object to be unscriptable?

早过忘川 提交于 2019-12-09 14:45:54

问题


I don't know what's going on here... I just want to check the value of a model field and then update it accordingly... any help or insight is appreciated!

model:

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

view:

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

error:

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

回答1:


The error is "unSUBscriptable". Your user_profile object isn't a dictionary. Use user_profile.beta, not user_profile['beta'].




回答2:


Alternatively, you can use a string with getattr:

getattr(user_profile, 'beta', False)

False is the default value; which, in your case would work with checking if the value is set or not. I found this very helpful, so I thought I would post this solution, even though the question was asked years ago. :)



来源:https://stackoverflow.com/questions/4617674/what-does-it-mean-for-an-object-to-be-unscriptable

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!