django 对于具有空字符串输入的FileField,ModelForm的cleaned_data返回None

oewdyzsn  于 2023-05-23  发布在  Go
关注(0)|答案(1)|浏览(126)

考虑一个具有可空文件字段的模型。在处理FileField时,我遇到了Django的ModelForm的一个令人困惑的行为。我注意到,当FileField接收到一个空字符串('')作为文件数据时,ModelForm的cleaned_data字典会为该字段返回None而不是''。
此外,我还观察到另一个相关行为:如果我有两个条目Model.objects.create()Model.objects.create(file='')
Model.objects.filter(file__isnull=True)将返回空queryset,Model.objects.filter(file='')将返回两个条目

8iwquhpp

8iwquhpp1#

对于您的第一个问题,这是预期的行为。如果你传递一个空值给FileField,它将返回None。FileField的代码如下:

def to_python(self, data):
        if data in self.empty_values:
            return None

你可能应该传递一个文件对象给一个FileField

相关问题