2013-05-17 49 views
8

Tôi có hai mô hình như thế này:đối tượng không có thuộc tính '__getitem__'

class School(models.Model): 
    name = models.CharField(max_length = 50) 

    def __unicode__(self): 
     return self.name 

class Education(models.Model): 
    user_profile = models.ForeignKey(UserProfile, related_name='Education') 
    school = models.OneToOneField(School) 

    def __unicode__(self): 
     return self.school 

Khi tôi muốn thêm một nền giáo dục để UserProfile với django quản trị eccour lỗi này:

Traceback: 
File "/usr/local/lib/python2.7/dist-packages/django/core/handlers/base.py" in get_response 
    115.       response = callback(request, *callback_args, **callback_kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/options.py" in wrapper 
    372.     return self.admin_site.admin_view(view)(*args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapped_view 
    91.      response = view_func(request, *args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/views/decorators/cache.py" in _wrapped_view_func 
    89.   response = view_func(request, *args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/sites.py" in inner 
    202.    return view(request, *args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapper 
    25.    return bound_func(*args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in _wrapped_view 
    91.      response = view_func(request, *args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/utils/decorators.py" in bound_func 
    21.     return func(self, *args2, **kwargs2) 
File "/usr/local/lib/python2.7/dist-packages/django/db/transaction.py" in inner 
    223.     return func(*args, **kwargs) 
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/options.py" in add_view 
    1009.     self.log_addition(request, new_object) 
File "/usr/local/lib/python2.7/dist-packages/django/contrib/admin/options.py" in log_addition 
    530.    action_flag  = ADDITION 
File "/usr/local/lib/python2.7/dist-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/social/education/add/ 
Exception Value: 'School' object has no attribute '__getitem__' 

Làm thế nào tôi có thể sửa chữa lỗi này ?

Trả lời

12

Để khắc phục điều này, bạn cần __unicode__ để trả lại str (không phải đối tượng).

def __unicode__(self): 
    return unicode(self.school) 
+1

+1, Hoặc chỉ cần trả lại 'self.school.name' có thể phù hợp hơn sau khi tất cả. Ngoài ra bạn có thể muốn tránh 'related_name = 'Education'' vì nó đã là tên của lớp –

+3

Tốt hơn để trả về' unicode (self.school) 'như mong đợi của nó để trả về unicode. – Rohan

+0

o ... cảm ơn bạn!: D –

Các vấn đề liên quan