- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我有一个允许用户上传图像的表单。如果他们不上传图像,则会显示默认图像。我希望如果他们不上传图像,图像字段将被禁用。我以为表单末尾的 if 语句会起作用 - 但事实并非如此。这是表单 forms.py:
class ProductForm(forms.ModelForm):
class Meta:
model = Product
fields = ['name', 'description', 'url', 'product_type', 'price', 'image', 'image_url']
labels = {
'name': 'Product Name',
'url': 'Product URL',
'product_type': 'Product Type',
'description': 'Product Description',
'image': 'Product Image',
'image_url': 'Product Image URL',
'price': 'Product Price'
}
widgets = {
'description': Textarea(attrs={'rows': 5}),
}
if Product.image is None:
form.fields['image'].disabled = True
这是 models.py:
class Product(models.Model):
user = models.ForeignKey(User)
name = models.CharField(max_length=100)
description = models.CharField(max_length=300)
price = models.DecimalField(max_digits=10, decimal_places=2)
url = models.CharField(max_length=200)
product_type = models.CharField(max_length=100)
image = models.ImageField(upload_to='product_images', default='product_images/default.png', null=True)
image_url = models.CharField(max_length=200, blank=True)
likes = models.IntegerField(default=0)
def __str__(self):
return self.name
def get_absolute_url(self):
return reverse('index', kwargs={})
我尝试删除 default='product_images/default.png' - 这似乎不起作用。我尝试了 null=True ,这似乎使页面崩溃了。我错过了什么?
这是相关部分模板:
{% if product.image.url %}
{% if product.image_url %}
<img class="img-fluid" src="{{ product.image_url }}" />
{% endif %}
<img class="img-fluid" src="{{ product.image.url }}" />
{% endif %}
这显示了两种类型的图像 - 上传到本地和链接到外部。我试图解决的问题是默认图像出现在外部图像下方 - 我想隐藏默认图像。我刚开始学习 Django 和 Python,所以如果我把事情搞混了,我深表歉意。
最佳答案
我认为你想要的不是禁用表单中的 ImageField。只需尝试为模型中的图像字段设置 blank=True
并删除 default
参数即可。
# models.py
class Product(models.Model):
...
image = models.ImageField(upload_to='product_images', blank=True, null=True)
# image_url = models.CharField(max_length=200, blank=True) # Remove this field, you don't need it.
...
此外,从模型和表单中删除 image_url
。
然后在模板中输入如下内容:
{% if product.image %}
<img class="img-fluid" src="{{ product.image.url }}" />
{% else %}
<img class="img-fluid" src="/media/product_images/default.png" />
{% endif %}
关于python - ModelForm 如果为空则禁用 imageField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47001484/
我需要从表单中裁剪出抢救出来的图片,存入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
我是一名优秀的程序员,十分优秀!