У меня есть поле даты в моей модели, и я использую SelectDateWidget (), чтобы предоставить опцию выбора даты пользователя. Имя поля deadline
, и вот как я устанавливаю виджет в форме модели
widgets = {
'deadline' : SelectDateWidget(),
}
Теперь проблема в том, что когда я отправляю форму, я получаю следующую ошибку
TypeError - expected string or buffer
. Я немного поработал и обнаружил, что Datewidget возвращает значение bool
вместо строки.
Если я удаляю виджет даты и отправляю дату обычно в формате ГГГГ-ММ-ДД, все работает нормально. Кто-нибудь может помочь понять, что здесь на самом деле идет не так?
Редактировать: Добавление моей модели и формы модели
class UniData(models.Model):
name = models.CharField(max_length=500)
slug = models.SlugField(blank=True, unique=True)
SCORE_CHOICES = (
(0 , 'Not Sent'),
(1 , 'Sent'),
)
YES_NO = (
(0 , 'NO'),
(1 , 'YES'),
)
Score = models.IntegerField(choices=SCORE_CHOICES, default=0)
creator = models.ForeignKey(User, blank=True, null=True)
deadline = models.DateField(blank=True, null=True)
submitted = models.IntegerField(choices=YES_NO, default=1)
created_date = models.DateTimeField(null = True)
class Meta:
ordering = ('-created_date',)
def __unicode__(self):
return u'%s' %(self.name)
def save(self, *args, **kwargs):
self.slug = slugify(self.universityName)
super(UniData, self).save(*args, **kwargs)
def get_absolute_url(self):
return "/ScoreTracker/%s/" % self.slug
А модель - это
class UniForm(ModelForm):
class Meta:
fields = ['name', 'Score','deadline', 'submitted']
widgets = {
'name': TextInput(attrs={'value':'University Name', 'class':'default-value',}),
'Score': RadioSelect(choices=SCORE_CHOICES),
'submitted': RadioSelect(choices=YES_NO),
'deadline': SelectDateWidget(),
}