管理者の一括処理は、queryset.delete()
を呼び出します。
クエリーセットの.delete()
メソッドを無効にすることができます。 のように、常に1行1個のオブジェクトの削除が行われます。たとえば:で
managers.py:
from django.db import models
from django.db.models.query import QuerySet
class PhotoQueryMixin(object):
""" Methods that appear both in the manager and queryset. """
def delete(self):
# Use individual queries to the attachment is removed.
for photo in self.all():
photo.delete()
class PhotoQuerySet(PhotoQueryMixin, QuerySet):
pass
class PhotoManager(PhotoQueryMixin, models.Manager):
def get_query_set(self):
return PhotoQuerySet(self.model, using=self._db)
models.pyで:
from django.db import models
class Photo(models.Model):
image = models.ImageField(upload_to='images')
objects = PhotoManager()
def delete(self, *args, **kwargs):
# Note this is a simple example. it only handles delete(),
# and not replacing images in .save()
super(Photo, self).delete(*args, **kwargs)
self.image.delete()
おそらくあなたは何も削除していませんか? delete()を呼び出す内容を表示できますか? – artagnon
管理領域のアイテムを削除するだけで試しましたが、手動で呼び出すことはありませんでした。 – schneck