私はユーザーがイメージをアップロードできるフォームを持っています。アップロードしていない場合、デフォルトの画像が表示されます。画像をアップロードしないと、画像フィールドは無効になります。私は、フォームの最後にあるif文がうまくいくと思ったが、そうではなかった。ここでは、フォームのforms.pyです:ModelFormが空の場合はimageFieldを無効にします
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={})
私はデフォルト= '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を学ぶのが早いので、物事を混ぜると謝罪します。
:
はその後、テンプレートでのようなものを置きますか? –Product.imageがNoneの場合:form.fields ['image']。disabled =フォーム内のTrueを選択すると、イメージなしのイメージフィールドが無効になっています。ユーザーがイメージをアップロードしていない場合は、そのフィールドを無効にします。 – Steve