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