我看了一下下面的问题,但没有运气。我不知道,也许我没听懂答案。
1) How to remove the “Currently” tag and link of a FileInput widget in Django?
2) Django ModelForm ImageField
My form:
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")
....
我的模型:
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
并添加了额外的东西,但我不明白如何克服这一点?
提前谢谢。
发布于 2013-01-15 21:03:53
解决方案是:
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
继承的字段。
发布于 2013-07-19 07:54:34
@mtndesign,你可能还想要一个"remove“选项,你可以把它放在模板中的任何地方。
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
发布于 2013-01-15 21:03:28
您可以通过在初始化时指定小部件来更改用于呈现表单域的小部件:
class SettingsForm(forms.ModelForm):
company_logo = forms.ImageField(label=_('Company Logo'),required=False, \
error_messages ={'invalid':_("Image files only")},\
widget=FileInput)
请参阅小部件的the docs。
https://stackoverflow.com/questions/14336925
复制相似问题