使用图像字段在 django 中更新

Posted

技术标签:

【中文标题】使用图像字段在 django 中更新【英文标题】:update in django with image field 【发布时间】:2012-08-01 07:49:03 【问题描述】:

我正在尝试使用 django orm 仅更新图像字段,即用户稍后将添加图像并将在主表中更新

我试过了

MerchantProfile.objects.filter(id='%s'%(cd['id'])).update(photo='%s'%(cd['photo']))

但它只会更新标题,而不是保存在文件夹中的图像

然后我尝试关注

p1=MerchantProfile()
p1.id=cd['id']
if cd['photo']:
       p1.photo=cd['photo']
else:
       p1.photo=cd['uploaded_photo']
p1.save()

它将保存图像,但会显示错误,例如 payment_card cannot be null

我的模型如下

class Merchantprofile:
   user = models.OneToOneField(UserProfile, related_name="merchant_profile")
   payment_card = models.OneToOneField(PaymentCard, related_name="merchant_profile")
   current_state = models.IntegerField('State', choices=STATE_CHOICES)
   name = models.CharField('Merchant Name', max_length=64)
   photo=models.ImageField(upload_to='logo',blank=True)

表格

class LogoForm(forms.Form):
     id = forms.CharField(widget=forms.HiddenInput,required=False)
     photo = forms.ImageField(
        required=False,
        label='Upload photo',
        initial=True,
        help_text='max. 4 megabytes'
    )

那么只有在相关文件夹上上传照片才能更新照片字段的最佳方法是什么,因为我不能每次都更新所有字段

【问题讨论】:

【参考方案1】:

试试这个:

p1 = MerchantProfile.objects.filter(id=cd['id'])
if cd['photo']:
   p1.photo=cd['photo']
else:
   p1.photo=cd['uploaded_photo']
p1.save()

【讨论】:

@JoelleTillman 我希望 cd['photo'] (和其他)是文件包装器或类似对象。 它说'QuerySet'对象没有属性'save' @JoelleTillman cd['photo'] 似乎不是 django 文件类型对象。它不是取自 request.FILES 吗?您只能将文件对象保存在_imagefield中。

以上是关于使用图像字段在 django 中更新的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Django 中使用图像更新 div?

Django:仅更新UpdateView中已更改的字段

models.py中增加了字段,django中怎样更新

单击并在数据库中更新时在 Django 中编辑表单字段

Django:如何在不刷新页面的情况下更新图像?

为啥图像名称未显示在表单字段中以进行更新?