2

我的模型中有一个日期字段,我正在使用 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(),     
        }
4

0 回答 0