gpt4 book ai didi

python - 在 Django 中使用 clean() 方法

转载 作者:行者123 更新时间:2023-11-30 22:03:07 25 4
gpt4 key购买 nike

我想知道如何在我的表单中设置一个clean方法,因为我相信我的函数写得很好,但我没有克服以获得预期的结果。

我有一个简单的模型:

class Document(models.Model):
...
format = models.CharField(max_length=10, verbose_name=_('format'), choices=FORMAT_CHOICES, null=False, blank=False)
upload = models.FileField(upload_to='media/files/', validators=[validate_file_extension], verbose_name=_('document file'), null=False, blank=False)

我有一个表格:

class DocumentForm(forms.ModelForm):

def clean(self):
cleaned_data = super().clean()
upload = cleaned_data.get("upload")
file_format = upload.split(".")[-1]
format = cleaned_data.get("format")
if upload and format:
if format != file_format:
raise forms.ValidationError("Incorrect format and file format")

def __init__(self, *args, **kwargs):
super(DocumentForm, self).__init__(*args, **kwargs)

for key in self.fields:
self.fields[key].required = True

class Meta:
model = Document
fields = ['format', 'upload']

此方法必须检查选择的格式和文件上传扩展名是否相同。如果不是,它应该返回一个错误。

我遇到了这个问题:

'TemporaryUploadedFile' object has no attribute 'split'

您知道如何检查这两个字段是否正确吗?

最佳答案

您应该拆分文件名,而不是 TemporaryUploadedFile 对象来获取扩展名。尝试使用 upload.name 来获取文件名。

关于python - 在 Django 中使用 clean() 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53634641/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com