我的模型中有一个日期字段,我正在使用 SelectDateWidget() 来提供用户日期选择选项。该字段的名称是deadline
,这是我在模型表单中设置小部件的方式
widgets = {
'deadline' : SelectDateWidget(),
}
现在的问题是当我提交表单时出现以下错误
TypeError - expected string or buffer
。我做了一些调整,发现 Datewidget 返回的是一个bool
值而不是字符串。
如果我删除日期小部件并以 YYYY-MM-DD 格式正常提交日期,一切正常。任何人都可以帮助了解这里实际出了什么问题吗?
编辑:添加我的模型和模型表单
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(),
}