使用 django-stdimage 时是否可以删除 'Currently' 标签?
Is it possible to remove 'Currently' label when using django-stdimage?
我在我的 Django 应用程序中使用 django-stdimage
并且效果很好,唯一的问题是我想删除 'Currently' 字符串、清除复选框和其余装饰HTML 模板。我不知道如何实现。
这是我的 models.py
:
中的 StdImageField 声明
photo = StdImageField(upload_to=join('img', 'agents'),
variations={'thumbnail': (100, 100, True)}, default=None,
null=True, blank=True, )
我已经阅读了几个关于修改 ImageField 小部件以使用 class ClearableFileInput
的 SO 答案,但似乎 widget
属性不允许作为 StdImageField
class参数。
有办法去掉所有这些装饰吗?
谢谢。
StdImageField
extends Django 的ImageField
Django 的 ImageField
defines 'form_class': forms.ImageField
和 Django 的 forms.ImageField
默认小部件是:ClearableFileInput
因此,如果您想在 model.fields
级别上更改此小部件,您需要扩展 StdImageField
并将 formfield
方法重写为 return a form_lass
与 form.field
具有另一个默认小部件。
一个简单的示例解决方案应如下所示:
class NotClearableImageField(forms.ImageField):
widget = forms.FileInput
class MyStdImageField(StdImageField):
def formfield(self, **kwargs):
kwargs.update({'form_class': NotClearableImageField})
return super(MyStdImageField, self).formfield(**defaults)
# Now you can use MyStdImageField
# in your model instead of StdImageField
class MyModel(models.Model):
my_image = MyStdImageField(*args, **kwargs)
但这将是一个影响所有 ModelForm
扩展您的 Model
(包括 Django 管理员)的更改。
您可能不想这样做,您可以做的是仅在您想要此特定行为的单个 form
上应用此小部件覆盖。 ModelForms
已经支持这个:
class MyModelForm(forms.ModelForm):
class Meta:
model = MyModel
fields = '__all__'
widgets = {
'my_image': forms.FileInput(),
}
现在您可以在需要更改的地方使用此表格class。
我在我的 Django 应用程序中使用 django-stdimage
并且效果很好,唯一的问题是我想删除 'Currently' 字符串、清除复选框和其余装饰HTML 模板。我不知道如何实现。
这是我的 models.py
:
photo = StdImageField(upload_to=join('img', 'agents'),
variations={'thumbnail': (100, 100, True)}, default=None,
null=True, blank=True, )
我已经阅读了几个关于修改 ImageField 小部件以使用 class ClearableFileInput
的 SO 答案,但似乎 widget
属性不允许作为 StdImageField
class参数。
有办法去掉所有这些装饰吗?
谢谢。
StdImageField
extends Django 的ImageField
Django 的 ImageField
defines 'form_class': forms.ImageField
和 Django 的 forms.ImageField
默认小部件是:ClearableFileInput
因此,如果您想在 model.fields
级别上更改此小部件,您需要扩展 StdImageField
并将 formfield
方法重写为 return a form_lass
与 form.field
具有另一个默认小部件。
一个简单的示例解决方案应如下所示:
class NotClearableImageField(forms.ImageField):
widget = forms.FileInput
class MyStdImageField(StdImageField):
def formfield(self, **kwargs):
kwargs.update({'form_class': NotClearableImageField})
return super(MyStdImageField, self).formfield(**defaults)
# Now you can use MyStdImageField
# in your model instead of StdImageField
class MyModel(models.Model):
my_image = MyStdImageField(*args, **kwargs)
但这将是一个影响所有 ModelForm
扩展您的 Model
(包括 Django 管理员)的更改。
您可能不想这样做,您可以做的是仅在您想要此特定行为的单个 form
上应用此小部件覆盖。 ModelForms
已经支持这个:
class MyModelForm(forms.ModelForm):
class Meta:
model = MyModel
fields = '__all__'
widgets = {
'my_image': forms.FileInput(),
}
现在您可以在需要更改的地方使用此表格class。