Picture
が付いたモデルがありImageField
ます。のインスタンスを削除する場合、Picture
に設定されているファイルImageField
は削除されません。
バグですか?どうすればいいですか?
Picture
が付いたモデルがありImageField
ます。のインスタンスを削除する場合、Picture
に設定されているファイルImageField
は削除されません。
バグですか?どうすればいいですか?
FileField
sおよびImageField
sに関連付けられたファイルの削除は、Django1.3で意図的に削除されました。チケット#6456を参照してください。Djangoはトランザクションを広範囲に使用して、リクエストで問題が発生した場合のデータ破損を防ぎます。削除トランザクションがロールバックされた場合、ファイルがファイルシステムから削除された後、存在しないファイルを指すレコードが作成されます。自動削除を要求するすべてのチケットは、まとめて「修正されません」とマークされているため、これは変更されません。
回避策については、この前のStackOverflowの質問を参照してください。
仮定?
class Picture(models.Model):
image = ImageField(blank=True, null=True, upload_to="pics")
def delete(self, *args, **kwargs):
self.image.delete()
super(Picture, self).delete(*args, **kwargs)
次に、これを手動で作成および削除します。
image = "./image.jpg"
picture = Picture.objects.create(image=File(open(image, "r"))
picture.save()
それからそれを削除しますか?
picture.delete()
HTH