次のスキーマがある場合、単一のメソッドで多数のモデルからレコードを削除しようとしています:
picture 1:1 picture_foreign_picture *:1 picture_foreign
これらの指定されたリストのpicture_foreignオブジェクトを削除しています:
picture_foreign_pictures = PictureForeignPicture.objects.filter(picture_foreign__in=picture_foreigns)
picture_ids = picture_foreign_pictures.values_list('picture_id', flat=True)
logger.warn('PICTURES REMOVE: %s' % picture_ids)
picture_foreign_pictures.delete()
logger.warn('PICTURES REMOVE: %s' % picture_ids)
2 つの loggers 行は次を出力します。
WARNING 2013-01-02 03:40:10,974 PICTURES REMOVE: [86L]
WARNING 2013-01-02 03:40:11,045 PICTURES REMOVE: []
それにもかかわらず、画像86
はまだ存在します。
mysql> select id from picture where id = 86;
+----+
| id |
+----+
| 86 |
+----+
1 row in set (0.00 sec)
純粋な整数リストに変換するだけでこれを回避できると思いますが、これにpicture_ids
もっとDjangoメソッドがあるかどうか疑問に思っていますか? 私はすでにこれを処理していると思ってflat=True
いましたが、単なるリスト以上のもののようです。