首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何当前不渲染django图像场并清除内容?

如何当前不渲染django图像场并清除内容?
EN

Stack Overflow用户
提问于 2013-01-15 19:39:58
回答 3查看 16.7K关注 0票数 25

我看了一下下面的问题,但没有运气。我不知道,也许我没听懂答案。

1) How to remove the “Currently” tag and link of a FileInput widget in Django?

2) Django ModelForm ImageField

My form:

代码语言:javascript
复制
class SettingsForm(forms.ModelForm):
    company_logo = forms.ImageField(label=_('Company Logo'),required=False, error_messages = {'invalid':_("Image files only")})
    class Meta:
        model = Settings
        fields = ("company_logo")
    ....

我的模型:

代码语言:javascript
复制
class Settings(models.Model):
    strg=CustomFileSystemStorage(strict_name='images/company_logo.png',save_format='PNG')
    company_logo=models.ImageField(upload_to='images',blank=True,null=True,storage=strg)
    .....

渲染后的

我从第一个链接中看到,models.ImageField继承了FileInput并添加了额外的东西,但我不明白如何克服这一点?

提前谢谢。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-01-15 21:03:53

解决方案是:

代码语言:javascript
复制
class SettingsForm(forms.ModelForm):
    company_logo = forms.ImageField(label=_('Company Logo'),required=False, error_messages = {'invalid':_("Image files only")}, widget=forms.FileInput)
    class Meta:
        model = Settings
        fields = ("company_logo")
    ....

我添加了小部件forms.FileInput,以便告诉ImageField使用基本字段,而不是从FileInput继承的字段。

票数 33
EN

Stack Overflow用户

发布于 2013-07-19 07:54:34

@mtndesign,你可能还想要一个"remove“选项,你可以把它放在模板中的任何地方。

代码语言:javascript
复制
class MyForm(forms.ModelForm):
    photo = forms.ImageField(required=False, widget=forms.FileInput)
    remove_photo = forms.BooleanField(required=False)

    ...

    def save(self, commit=True):
        instance = super(MyForm, self).save(commit=False)
        if self.cleaned_data.get('remove_photo'):
            try:
                os.unlink(instance.photo.path)
            except OSError:
                pass
            instance.photo = None
        if commit:
            instance.save()
        return instance
票数 9
EN

Stack Overflow用户

发布于 2013-01-15 21:03:28

您可以通过在初始化时指定小部件来更改用于呈现表单域的小部件:

代码语言:javascript
复制
class SettingsForm(forms.ModelForm):
    company_logo = forms.ImageField(label=_('Company Logo'),required=False, \
                                    error_messages ={'invalid':_("Image files only")},\
                                    widget=FileInput)

请参阅小部件的the docs

票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14336925

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档