2011-01-06 3 views
2

Я не знаю, что здесь происходит ... Я просто хочу проверить значение поля модели, а затем обновить его соответственно ... любая помощь или понимание оценены!Что означает, что объект может быть не подлежит регистрации?

модель:

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 
+1

Возможный дубликат [В Python, что это означает, если объект подлежит расшифровке или нет?] (Http://stackoverflow.com/questions/216972/in-python-what-does-it-mean- if-an-object-is-subscriptable-or-not) – mipadi

ответ

7

Ошибка "unSUBscriptable". Ваш объект user_profile не является словарем. Используйте user_profile.beta, а не user_profile['beta'].

+0

О да, это должно быть так. Спасибо. –

0

В качестве альтернативы, вы можете использовать строку с getattr:

getattr(user_profile, 'beta', False) 

ЛОЖЬ значение по умолчанию; который в вашем случае будет работать с проверкой, установлено ли значение или нет. Я нашел это очень полезным, поэтому я думал, что опубликую это решение, хотя вопрос был задан много лет назад. :)

Смежные вопросы