[PYTHON] TypeError 'x'객체에 '__getitem__'속성이 없습니다.
PYTHONTypeError 'x'객체에 '__getitem__'속성이 없습니다.
오류가 발생했습니다.
관리자 인터페이스에 새 CampCon 항목을 저장하면 캠프 사이트라는 데이터베이스를 처리하는 캠프 사이트라는 애플리케이션이 하나 있는데 리뷰를 처리하는 콘텐츠라는 또 다른 애플리케이션이 있습니다. 나는 Django에 대해 아주 익숙하다. 그리고 이것은 나의 첫번째 비 튜토리얼 기반 프로젝트이다. 나는 뇌를 고수하고 웹에서 운이없는 대답을 찾고있다. 당신의 도움에 미리 감사드립니다. 여기 내 캠프장 모델입니다 :
from django.contrib.gis.db import models
class CampSite(models.Model):
name = models.CharField(max_length=250)
showers = models.BooleanField()
flush = models.BooleanField()
rv = models.BooleanField()
lonlat = models.PointField(null=True, blank=True)
objects = models.GeoManager()
def __unicode__(self):
return self.name
콘텐츠 모델은 다음과 같습니다.
from django.contrib.gis.db import models
from campsites.models import CampSite
from django.contrib.auth.models import User
from activities.models import Activities
class CampCon(models.Model):
campsite = models.ForeignKey(CampSite)
trip = models.ForeignKey('Trip')
Date = models.DateField()
user = models.ForeignKey(User)
overall_review = models.TextField()
facilities_review = models.IntegerField()
things_to_do = models.IntegerField()
privacy = models.IntegerField()
beauty = models.IntegerField()
overall_rating = models.IntegerField()
def __unicode__(self):
return self.campsite
class ImageDB(models.Model):
campsite = models.ForeignKey(CampSite)
user = models.ForeignKey(User)
description = models.CharField(max_length=200)
image = models.ImageField(upload_to='/home/bobby/Pictures/CampThat')
date_uploaded = models.DateField()
date_taken = models.DateField()
trip = models.ForeignKey('Trip')
activity = models.ForeignKey(Activities)
def __unicode__(self):
return self.campsite
class Trip(models.Model):
date = models.DateField()
description = models.CharField(max_length=100)
title = models.CharField(max_length=100)
blog = models.TextField()
def __unicode__(self):
return self.title
class ActivityCon(models.Model):
trip = models.ForeignKey(Trip)
rating = models.IntegerField()
overall_review = models.TextField()
activity = models.ForeignKey(Activities)
그리고 여기 전체 자취가 있습니다 :
Environment:
Request Method: POST
Request URL: http://localhost:8000/admin/content/campcon/add/
Django Version: 1.5
Python Version: 2.7.3
Installed Applications:
('django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
'django.contrib.messages',
'django.contrib.staticfiles',
'campsites',
'auth',
'trips',
'content',
'activities',
'django.contrib.admin')
Installed Middleware:
('django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware')
Traceback:
File "/usr/lib/python2.7/site-packages/django/core/handlers/base.py" in get_response
116. response = callback(request, *callback_args, **callback_kwargs)
File "/usr/lib/python2.7/site-packages/django/contrib/admin/options.py" in wrapper
367. return self.admin_site.admin_view(view)(*args, **kwargs)
File "/usr/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view
91. response = view_func(request, *args, **kwargs)
File "/usr/lib/python2.7/site-packages/django/views/decorators/cache.py" in _wrapped_view_func
89. response = view_func(request, *args, **kwargs)
File "/usr/lib/python2.7/site-packages/django/contrib/admin/sites.py" in inner
202. return view(request, *args, **kwargs)
File "/usr/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapper
25. return bound_func(*args, **kwargs)
File "/usr/lib/python2.7/site-packages/django/utils/decorators.py" in _wrapped_view
91. response = view_func(request, *args, **kwargs)
File "/usr/lib/python2.7/site-packages/django/utils/decorators.py" in bound_func
21. return func(self, *args2, **kwargs2)
File "/usr/lib/python2.7/site-packages/django/db/transaction.py" in inner
208. return func(*args, **kwargs)
File "/usr/lib/python2.7/site-packages/django/contrib/admin/options.py" in add_view
958. self.log_addition(request, new_object)
File "/usr/lib/python2.7/site-packages/django/contrib/admin/options.py" in log_addition
525. action_flag = ADDITION
File "/usr/lib/python2.7/site-packages/django/contrib/admin/models.py" in log_action
18. e = self.model(None, None, user_id, content_type_id, smart_text(object_id), object_repr[:200], action_flag, change_message)
Exception Type: TypeError at /admin/content/campcon/add/
Exception Value: 'CampSite' object has no attribute '__getitem__'
해결법
-
==============================
1.문제는 __unicode__ 함수가 유니 코드 문자열을 반환해야 할 때 모델 객체를 반환한다는 것입니다.
문제는 __unicode__ 함수가 유니 코드 문자열을 반환해야 할 때 모델 객체를 반환한다는 것입니다.
__unicode__ 메소드에 unicode () 함수를 추가하면됩니다.
class CampCon(models.Model): campsite = models.ForeignKey(CampSite) trip = models.ForeignKey('Trip') Date = models.DateField() user = models.ForeignKey(User) overall_review = models.TextField() facilities_review = models.IntegerField() things_to_do = models.IntegerField() privacy = models.IntegerField() beauty = models.IntegerField() overall_rating = models.IntegerField() def __unicode__(self): return unicode(self.campsite) class ImageDB(models.Model): campsite = models.ForeignKey(CampSite) user = models.ForeignKey(User) description = models.CharField(max_length=200) image = models.ImageField(upload_to='/home/bobby/Pictures/CampThat') date_uploaded = models.DateField() date_taken = models.DateField() trip = models.ForeignKey('Trip') activity = models.ForeignKey(Activities) def __unicode__(self): return unicode(self.campsite)
그러면 Campsite.__ unicode__이 호출되어 campsite.name이 반환됩니다.
-
==============================
2.이 방법을 대신 사용하십시오.
이 방법을 대신 사용하십시오.
def __unicode__(self): return unicode(self.campsite)
-
==============================
3.다음과 같이하면 이렇게됩니다.
다음과 같이하면 이렇게됩니다.
event_name = CharField(max_length = 250)
그리고 이렇게 : (옳은 길)
event_name = models.CharField(max_length = 250)
누군가에게 도움이 될지 모른다.
-
==============================
4.이후 구글에서 첫 번째 히트 : 나는 다음과 같은 유사한 오류가 발생했습니다 ( 'ItemGroup'개체 속성 '__getitem__'가 없습니다) :
이후 구글에서 첫 번째 히트 : 나는 다음과 같은 유사한 오류가 발생했습니다 ( 'ItemGroup'개체 속성 '__getitem__'가 없습니다) :
class ItemGroup(models.Model): groupname = models.CharField(max_length=128) def __unicode__(self): return "%s" % self.groupname class Item(models.Model): name = models.CharField(max_length=128) group = models.ForeignKey(MedGroup, verbose_name="Groep") def __unicode__(self): return "%s (%s)" % (self.name, self.group[:10])
마지막 줄이 잘못되었습니다.
"% s (% s)"% (self.name, self.group.groupname [: 10])를 반환하도록 해당 행을 대체하여 수정되었습니다.
from https://stackoverflow.com/questions/13074331/typeerror-x-object-has-no-attribute-getitem by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 파이썬 3.2 람다 구문 오류 [중복] (0) | 2018.11.25 |
---|---|
[PYTHON] HTTPError : HTTP 오류 403 : 금지됨 (0) | 2018.11.25 |
[PYTHON] 어떻게하면 x 개의 원소마다리스트를 나누고 그 원소 x 개의 원소를 새로운리스트에 추가 할 수 있을까요? (0) | 2018.11.25 |
[PYTHON] 단어 - 단어 동시 발생 매트릭스 (0) | 2018.11.25 |
[PYTHON] pandas DataFrame에서 열을 중첩 제거하려면 어떻게합니까? (0) | 2018.11.24 |