画像のアップロードにはdjangoとjqueryを使用しています。まず、アップローダーを使用して画像をアップロードします。画像はtmpbg
imagefield に保存されます。次に、保存ボタンをクリックするtmpbg
と、背景画像フィールドに移動します。ここで必要なのは、背景のイメージ フィールド パスにある孤立したイメージ ファイルを削除することです。
ここにコードがあります
Models.py:
class BackgroundModel(models.Model):
user = models.OneToOneField(User)
background = models.ImageField(upload_to='backgrounds', null=True, blank=True)
tmpbg = models.ImageField(upload_to='backgrounds', null=True, blank=True)
class BackgroundModelForm(ModelForm):
class Meta:
model = BackgroundModel
exclude = ('user', 'background')
Views.py (パス内の画像ファイルを削除するためのコード):
try:
bg = BackgroundModel.objects.get(user=request.user)
except BackgroundModel.DoesNotExist:
pass
else:
if bg.background != '':
image_path = os.path.join(settings.MEDIA_ROOT, str(bg.background))
try:
os.unlink(image_path)
bg.BackgroundModel.delete()
except:
pass
bg.background = bg.tmpbg
return HttpResponse("")
ただし、孤立したイメージファイルは削除されません。私はどんな間違いをしましたか?
アップデート:
この行に問題があります
bg.background=bg.tmpbg
シェルモードでチェックインしたとき。何も表示されません。
>>> g.background
<ImageFieldFile: None>
しかし、tmpbgに画像ファイルがあります
>>> g.background
<ImageFieldFile: backgrounds/ijkl.jpg>
では、あるイメージフィールドから別のフィールドにコピーするにはどうすればよいですか?
image_path コードの間は Correct! です。