Mam próbowali usuwać rekordy z wielu modeli w jednej metody, zostały Mam następujący schemat:Czy istnieje "właściwy" sposób konwersji django.db.models.query.ValuesListQuerySet do czystej listy?
picture 1:1 picture_foreign_picture *:1 picture_foreign
mam Usunięcie tych danej listy obiektów 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)
W 2 wywożący linie wyjściowe następujące:
WARNING 2013-01-02 03:40:10,974 PICTURES REMOVE: [86L]
WARNING 2013-01-02 03:40:11,045 PICTURES REMOVE: []
Mimo to jednak obraz 86
nadal istnieje:
mysql> select id from picture where id = 86;
+----+
| id |
+----+
| 86 |
+----+
1 row in set (0.00 sec)
Chyba mogę obejść ten problem, po prostu konwersja picture_ids
do czystego listy całkowitej jednak zastanawiam się, czy istnieje bardziej metoda Django do tego? Pomyślałbym, że flat=True
poradziłby sobie z tym, ale wydaje się być czymś więcej niż czystą listą.
powyżej działania jest podnoszenie błąd: błąd w argumencie: – Arun
@Arun dostałem '*** błąd w argument' błędu kiedy debugowania z WPB, ponieważ pdb zastępuje słowo kluczowe 'list'. W * świecie rzeczywistym * to rozwiązanie działa. –
Dotknie bazy danych do przekonwertowania. Jest to problem, ponieważ jeśli ValueListQuerySet jest podzapytaniem innego zapytania, dotknie bazy danych, zanim będzie to konieczne. –