jua*_*ith 2 python django django-widget imagefield
我django-stdimage在我的 Django 应用程序中使用它,它工作得很好,唯一的问题是我想从 HTML 模板中删除“当前”字符串、清除复选框和其余装饰。我无法弄清楚如何实现这一目标。
这是我的 StdImageField 声明models.py:
photo = StdImageField(upload_to=join('img', 'agents'),
                      variations={'thumbnail': (100, 100, True)}, default=None,
                      null=True, blank=True, )
我已经阅读了几个关于修改 ImageField 小部件以使用该类的 SO 答案,ClearableFileInput但似乎该widget属性不允许作为StdImageField类参数。
有没有办法去除所有这些装饰?
谢谢你。
这 StdImageField 扩展Django的ImageField
姜戈的 ImageField 定义 'form_class': forms.ImageField
和姜戈的 forms.ImageField默认小部件是:ClearableFileInput
因此,如果您想在model.fields级别上更改此小部件,则需要扩展StdImageField并覆盖该formfield方法以返回一个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(),
        }
现在您可以在需要更改的地方使用此表单类。
| 归档时间: | 
 | 
| 查看次数: | 1435 次 | 
| 最近记录: |