- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个模型和一个表单 (forms.ModelForm),其中有一个 ImageField。该模型类似于:
class Business(models.Model):
business_name = models.CharField(max_length=128)
.
.
business_image = ImageField(
max_length=128,
upload_to=upload_business_image_handler,
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)
.
.
随附表格:
class BusinessForm(forms.ModelForm):
def __init__(self, data=None, files=None, branch_list = None, country_list = None, *args, **kwargs):
super(BusinessForm, self).__init__(data, *args, **kwargs)
# create the MultipleChoiceField choice_list based on language
self.fields['branch'].choices = branch_list
self.fields['country'].choices = country_list
self.postdata = data
self.files = files
business_name = forms.CharField(widget=forms.TextInput(attrs={'size':'50', 'class': 'address'}), required=True)
#business_image = forms.ImageField(widget=forms.ClearableFileInput())
表单中的最后一行被注释掉,因为 forms.ClearableFileInput() 是 FileFields 和 ImageFields 的默认小部件。
现在,当使用此表单编辑现有记录时,模板中的图像如下所示:
Currently: <image_url>
Change: <browse_button>
我想更改文本标签“当前”和“更改”,而不是显示 image_url 我想显示图像。
当然,我可以复制和修改“site-packages/django/forms/widgets.py”中找到的“class ClearableFileInput(FileInput)”代码,但我想知道这是否是实现此目的的方法。
如有任何帮助或建议,我们将不胜感激。
现在我查看了“class ClearableFileInput(FileInput)”的代码
最佳答案
这是我对同一问题的解决方案。
from django.utils.safestring import mark_safe
from django.utils.html import escape, conditional_escape
from django.utils.encoding import force_unicode
from django.forms.widgets import ClearableFileInput, Input, CheckboxInput
class CustomClearableFileInput(ClearableFileInput):
def render(self, name, value, attrs=None):
substitutions = {
#uncomment to get 'Currently'
'initial_text': "", # self.initial_text,
'input_text': self.input_text,
'clear_template': '',
'clear_checkbox_label': self.clear_checkbox_label,
}
template = '%(input)s'
substitutions['input'] = Input.render(self, name, value, attrs)
if value and hasattr(value, "url"):
template = self.template_with_initial
substitutions['initial'] = ('<img src="%s" alt="%s"/>'
% (escape(value.url),
escape(force_unicode(value))))
if not self.is_required:
checkbox_name = self.clear_checkbox_name(name)
checkbox_id = self.clear_checkbox_id(checkbox_name)
substitutions['clear_checkbox_name'] = conditional_escape(checkbox_name)
substitutions['clear_checkbox_id'] = conditional_escape(checkbox_id)
substitutions['clear'] = CheckboxInput().render(checkbox_name, False, attrs={'id': checkbox_id})
substitutions['clear_template'] = self.template_with_clear % substitutions
return mark_safe(template % substitutions)
然后只需使用扩展小部件:
business_image = forms.ImageField(widget=CustomClearableFileInput())
关于Django ModelForm ImageField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10822111/
我需要从表单中裁剪出抢救出来的图片,存入model.ImageField 我的模型.py class Story(models.Model): creator = models.ForeignKe
我现在尝试了几个小时来使用 South 进行最愚蠢的迁移,但不知何故,我一直在悲惨地失败......我正在尝试迁移到 Sorl-Thumbnail。 这是我的过渡模型: class Deal(mode
我正在创建一个 django 项目,其中我使用 ImageField 将图片(图像)存储在数据库中... original_pic = models.ImageField() 另外,我想存储一个包含相
我正在尝试将自定义 upload_to 函数传递给我的模型 imageField 但我想将该函数定义为模型函数....这可能吗? class MyModel(models.Model): ..
我正在尝试使用 Django 2.0。我现在正在使用开发“runserver”,所以请记住我还没有投入生产。我熟悉两者在静态文件方面的区别。 我有一个博客文章模型。在管理员中,我希望能够使用 Imag
我正在尝试检测对 ImageField 的更改,以便以编程方式将更改与 Hg 同步。包含 ImageField 的模型正在使用 Django 多语言进行本地化,因此我必须单独检测每个字段的更改,而不是
我的models.py中有以下图像字段(见下面的代码) 我要集 图像的固定宽度和高度,所以它总是 100x100px 下面的代码是系统中已有的代码,我不确定宽度和高度是如何传递的,或者此代码是否可用于
我一直在尝试实现为个人用户更改头像的图片上传。我现在遇到的问题是它永远不会上传到文件夹中。它适用于管理员,但不适用于我创建的模板 views.py if 'avatar_upload' in requ
我有一个模型和一个表单 (forms.ModelForm),其中有一个 ImageField。该模型类似于: class Business(models.Model): business_na
我一直在尝试实现为个人用户更改头像的图片上传。我现在遇到的问题是它永远不会上传到文件夹中。它适用于管理员,但不适用于我创建的模板 views.py if 'avatar_upload' in requ
我有一个程序在后台运行,它将图像输出到我的服务器上的特定文件夹,并且这可能会以不同的时间间隔发生。我需要能够在模板上显示这些图像,因此我想使用 ImageField 将它们保存到数据库中。 我的问题是
保存模型“产品”后,我希望上传的图像与 pk 的名称相同,例如 22.png 或 34.gif 我不想仅更改名称的图像格式。如何才能做到这一点?到目前为止我的模型示例...... image = mo
我有模型 UserProfile 和字段 avatar = models.ImageField(upload_to=upload_avatar) upload_avatar 函数根据user.id 命
我正在使用 Django 构建个人摄影网站。我正在处理 models.py。我的应用名为“photoViewer”,网站名为“photoSite”。但是,当我运行 makemigrations 时,我
我有一个问题,我的模型中有一个ImageField,我想从url示例http://www.google.com/images/logos/ps_logo2.png上传此图像,我该怎么做? 谢谢 ! 最
我将原始数据数组 (RGBA8888) 从应用程序(C++ 中)发送到以 base64 编码的 http 发布数据中的 django 服务器,例如: field1=value1&prof_img=KS
我已经配置了 MEDIA_ROOT 和 MEDIA_URL 并且工作正常。我的 MEDIA 文件存储在名为 /media/ 的目录中,现在我想将新上传的 文件存储到新目录(例如。/media2/) 而
我想在我的模型的管理表单中有一个 ImageField(例如,个人资料)。我想稍后在 View 中显示此图像。 这是我的模型: class Individual(models.Model):
我是 Django 的新手。我在文档和这个网站上阅读了很多关于我的问题的内容。但我真的不明白我该怎么做才能做到这一点。有人可以告诉我所有步骤吗? model.py: class Post(models
我正在寻找一种在保存 ImageField 时调整大小、压缩和优化上传图像的方法。 class Image(models.Model): name = models.CharField(max
我是一名优秀的程序员,十分优秀!