我试图用一种方法从多个模型中删除记录,我有以下模式:
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个记录器行输出以下内容:
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
已经处理过了,但它似乎不仅仅是一个纯粹的列表。
答案 0 :(得分:27)
嗯,我不确定它是否合适,但使用list()
来实现这一目标非常简单:
picture_ids = list(picture_foreign_pictures.values_list('picture_id', flat=True))
答案 1 :(得分:4)
以上解决方案无效:
您可以像这样转换为pur列表:
p_ids =PictureForeignPicture.objects.filter(picture_foreign__in=picture_foreigns).values_list('picture_id', flat=True)
new_list = [];new_list.extend(p_ids)