gpt4 book ai didi

python - ModelForm 如果为空则禁用 imageField

转载 作者:太空宇宙 更新时间:2023-11-03 14:35:13 24 4
gpt4 key购买 nike

我有一个允许用户上传图像的表单。如果他们不上传图像,则会显示默认图像。我希望如果他们不上传图像,图像字段将被禁用。我以为表单末尾的 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com