内联 Django 管理循环 cleaned_data

0 投票
1 回答
745 浏览
提问于 2025-04-18 05:35

我想要验证所有以行内形式出现的日期,所以我正在开发下面的代码:

class CarDetalleForm(ModelForm):
    def __init__(self, *args, **kwargs):
        super(CarDetalleForm, self).__init__(*args, **kwargs)

    def clean(self):
        super(CarDetalleForm, self).clean()

        for x, row in enumerate(self.cleaned_data):
            date = row['car_carideal-{}-date_0'.format(x)]
            //here may be more than one variable to validate date

            .... validations dates ....

        return self.cleaned_data

    class Meta:
        model = CarDetail
        fields = ['group', 'date']

但是我在这行代码中遇到了一个错误(变量被赋值为“date”):

TypeError: string indices must be integers, not str

所以我可能做错了什么,或者这一行代码不对。有没有人知道怎么做循环来验证所有的日期呢?谢谢大家的帮助。

PS:抱歉我的英语不好 :P

1 个回答

0

我不太明白你想要做什么。一个表单的 cleaned_data 是一个字典,遍历字典时你得到的是它的键。这意味着在每次循环中,row 是一个字符串,而不是一个有键的字典。

你是不是也在使用表单集(formset)?也许你本来是想把代码放在表单集的清理方法里,而不是表单的清理方法里。但如果是这样,那还是不对:每个表单应该自己清理自己的数据,方法是定义 clean_<字段名> 方法。

撰写回答