2013-05-07 66 views
2

我试图在管理中添加一个“事件”,并得到这个错误:类型错误,“Class对象”对象不标化

TypeError at /admin/sms/event/add/ 'Contact' object is not subscriptable

models.py: 

class Contact(models.Model): 
    users = models.ManyToManyField(settings.AUTH_USER_MODEL, related_name="contact") 
    name = models.CharField(_("Recipient"), max_length=40) 
    phone = models.IntegerField(_("Phone"), max_length=10) 

    def __unicode__(self): 
     return "%s: %d" % (self.name, self.phone) 

class Event(models.Model): 
    calendar = models.ForeignKey(Calendar, verbose_name=_("Calendar"), related_name="event_calendar") 
    message = models.ForeignKey(Message, verbose_name=_("Message"), related_name="event_message") 
    recipient = models.ForeignKey(Contact, verbose_name=_("Recipient"), related_name="event1") 
    event_date = models.DateField(_("Date")) 
    start_time = models.TimeField(_("Start time")) 
    end_time = models.TimeField(_("End time"), blank=True, null=True) 
    location = models.CharField(_("Location of meeting"), blank=True, null=True, max_length=100) 
    reminder_options = models.IntegerField(choices=ReminderOptions.CHOICES, verbose_name=_("Reminder time")) 
    content = models.CharField(_("Event Notes"), max_length=160) 
    # recurring_options = models.IntegerField(choices=RecurringOptions.CHOICES, verbose_name=_("Recurring time")) 

    def __unicode__(self): 
     return self.recipient 

    def get_absolute_url(self): 
     return u'/create-event/' 
+0

它将它添加到数据库,然后抛出错误? – karthikr 2013-05-07 16:15:06

+0

你有定制的管理模式吗?如果是这样,请发布我们的admin.py – Aldarund 2013-05-07 16:36:23

回答

0

首先猜测是,你的手机领域得到了您的管理员表单中的字符串在您的模型中使用charField用于手机,并在admin.py中创建自定义表单。

在models.py中手机Integerfield更改为CharField:

class Contact(models.Model): 
    ... 
    phone = models.CharField(_("Phone"), max_length=200) 

    def __unicode__(self): 
     return "%s: %s" % (self.name, self.phone) # %d becomes %s 

在Admin.py创建表单:

from models import Contact 
from django import forms 
from django_localflavor_fr.forms import FRPhoneNumberField 

class ContactForm(forms.ModelForm): 
    phone = FRPhoneNumberField() 
    class Meta: 
     model = Contact 

https://docs.djangoproject.com/en/1.5/ref/contrib/localflavor/

在Admin.py创建的ModelAdmin :

class ContactAdmin(admin.ModelAdmin): 
    form = ContactForm 
相关问题