Я пытаюсь удалить записи из нескольких моделей одним методом, если у меня есть следующая схема:
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)
В двух логических линиях выводятся следующие данные:
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
уже справится с этим, но, похоже, это больше, чем просто чистый список.