[Django] (1093, "You can't specify target table."오류

1131 단어 djangoDjango
dele_id = Fee_details_invoices.objects.filter(fee_detail_id__in=fee_id_list, return_type='2').values_list('fee_detail_id', flat=True)
Fee_details_invoices.objects.filter(fee_detail_id__in=dele_id).delete()

오류 보고:
django.db.utils.DatabaseError: (1093, "You can't specify target table 'fee_details_invoices' for update in FROM clause")

오류 분석 해결:
첫 번째 줄 코드는 어떤 조건 줄의 어떤 필드를 가져오는 것을 의미한다
두 번째 줄 코드는 이 줄 값을 포함하는 기록을 삭제합니다
문서의 첫 줄 코드에 따라 되돌아오는 것은list일 거예요. 문서 봐요.
>>> Entry.objects.values_list('id', flat=True).order_by('id')[1, 2, 3, ...]

두 번째 줄 코드의 입력 매개 변수도list입니다. 문서 참조
Entry.objects.filter(id__in=[1, 3, 4])

왜 틀렸지?
debug를 통해 dele 보기id 결과
dele_id
[]
type(dele_id)

봤어, 리스트 모양으로 출력됐지만, 사실은 리스트 형식이 아니야.
해결: 두 번째 문장은dele아이디 강전 하시면 됩니다.
Fee_details_invoices.objects.filter(fee_detail_id__in=list(dele_id)).delete()

때로는 표상을 볼 수 없다.
동적 언어라도 유형이 일치하지 않으면 구덩이가 많다.

좋은 웹페이지 즐겨찾기