Django 1.3에서 2 개의 필드에 비 관계형 모델에 가입하는 방법
-
09-12-2019 - |
문제
나는 비 관계 (외래 키 없음)에 가입 해야하는 2 개의 기존 모델을 가지고 있습니다.이들은 다른 개발자들이 저에게 수정할 수 없습니다.
여기에 대한 간단한 설명이 있습니다 :
모델 프로세스
- 필드 파일 이름
- 필드 경로
- 분야 무게
- 필드 바
모델 서비스
- 필드 파일 이름
- 필드 경로
- 필드 servicename
- 필드 foo
파일 이름과 경로 열에이 두 모델의 모든 인스턴스에 가입해야합니다.이 조인이 발생하기 전에 각각의 객체에 적용하려면 기존 필터가 있습니다.
예 :
a= process.Objects.Filter (quicking= 231)
b= service.objects.filter (foo= 'abc')
result= a.filter (filename= b.filename, path= b.path)
해결책
이 빨아 지지만 최상의 베팅은 한 유형의 모든 모델을 반복하고 다른 유형에 대해 조인 된 모델을 가져 오려면 쿼리를 발행하는 것입니다.
다른 대안은 원시 SQL 쿼리를 실행하여 이러한 조인을 수행하고 각 모델 객체에 대한 ID를 검색 한 다음 해당 조인 된 쌍을 검색하는 것입니다.런타임에보다 효율적이지만 스키마가 진화하면 수동으로 유지해야합니다.
제휴하지 않습니다 StackOverflow