Django model imagefield此字段是必需的错误

时间:2012-05-26 18:31:11

标签: django field required imagefield

我有一个django应用程序,其中包含以下模型:

class Business(models.Model, GetDistance):
    business_name = models.CharField(max_length=128)
    .
    user = models.ForeignKey(User)
    .
    media_dir = models.CharField(max_length=256, blank=True)
    .
    business_image = models.ImageField(max_length=128, upload_to=upload_business_image_handler, blank=True, height_field='business_image_height', width_field='business_image_width')

    business_image_height = models.IntegerField(blank=True, null=True)
    business_image_width = models.IntegerField(blank=True, null=True)

然后我还定义了一个在“Business”模型中使用的上传处理程序:

def upload_business_image_handler(instance, filename):
    # determine the upload path
    .
    return file_path

我有一个表单使用一些小部件改变输入字段的默认呈现,例如:

business_name = forms.CharField(widget=forms.TextInput(attrs={'size':'50', 'class': 'address'}), required=True)

在表单中,我没有指定business_image字段,因此采用模型的默认值。模板中的表单包含:

<form enctype="multipart/form-data" method="POST" action="">{% csrf_token %}

并且视图代码包含:

business_form = BusinessForm(request.POST, request.FILES, auto_id='id_registration_%s', branch_list = branch_list, country_list = country_list)

现在,当我在表单中输入一些数据并为business_image字段选择一个图像时,一切都按预期工作。该文件的名称位于Business对象中,文件将上载到'upload_business_image_handler'确定的目录中。但是当我将business_image字段更改为:

business_image = models.ImageField(max_length=128, upload_to=upload_business_image_handler, height_field='business_image_height', width_field='business_image_width')

即。删除'blank = True'选项然后我总是得到'此字段是必需的'错误,即使我在business_image表单字段中选择了一个图像。

当我在视图中插入'assert False'时,我可以看到错误,但我也可以看到文件名和文件对象,所以我不明白错误信息。

0 个答案:

没有答案