2012-01-11 2 views
1

약간의 배경 ...장고 모델에 대한 사용자 지정 SQL

사용자 인증 백엔드를 만들고 사용자 모델을 확장하려고합니다. 나는 파란색 인쇄로 다음을 사용하고 있습니다 :

어떤 이유로

blog post by Scott Barnham

의 ORM이 유효하지 않은 SQL을 생성한다. 내부 조인을 자체적으로 수행하려는 것처럼 보이며 조인에 user_ptr_id라는 필드를 찾을 수 없으므로 실패합니다.

검색을 수행하면 나만이 아닐 수도 있습니다. 그리고 위의 블로그 게시물에 대한 의견에서 실제로 이것에 대한 언급이 있습니다. 그러나 나는 그것을 고칠 수 없다.

생성되는 SQL을 재정의 할 수 있어야합니다. 그 맞습니까? 내가 말할 수있는 것부터, 커스텀 Object manager로 이것을 할 수있는 것처럼 보입니다. 옳은?

그러나 내가하고 싶은 일의 좋은 예를 찾을 수없는 것 같습니다. 내가 본 모든 것은 상속 받고 사슬을 묶기를 원한다는 것입니다. 그건 내가하고 싶은 것이 아닙니다. 나는 단지 다음과 같이 말하고 싶다.

안녕 장고! select에서이 SQL 문을 사용하십시오. 기타

이게 가능합니까? 어쩌면 내 "googlin"은 오늘 꺼져 있지만 찾을 수없는 것 같습니다. 그것은 내가 잘못된 용어 나 다른 것을 사용하고 있다고 믿게합니다.

는 참고 : 나는 파이썬 2.6.5과 PostgreSQL 9.1

+1

도움을 얻는 가장 좋은 방법은 함께 작업하는 코드 (모델, 오류를 생성하는 코드 및 축 어적 오류 메시지)를 표시하는 것입니다. – sgallen

답변

0

데이비드 장고 1.3.1을 사용하고,

예, 당신이에 최우선 관리자를 구현하여 모델의 동작을 무시할 수 있습니다 목적. Greg Allard가 부드러운 삭제를 통해 실행하는 A Django Model Manager for Soft Deleting Records의 멋진 블로그를 찾았습니다. deleted을 True/False로 설정하고 삭제되지 않은 개체 또는 삭제 된 개체 만 모두 표시하십시오.

염두에두고 나는 당신이 원하는 것을 얻기 위해 객체의 all() 또는 filter() 메서드를 재정의 할 수 있다고 생각합니다. 옆으로, 내가 포인터를 사용했을 때마다, "ptr"은 필드의 이름에서 분명합니다. 이것은 클래스 상속 때문입니다. 예 : class Animal():..., class Man(Animal): 사람이 확장되거나 Animal의 하위 클래스입니다. 데이터베이스에서 Man 테이블은 ANYAL 필드와 MAN 필드가 JOIN 된 Man으로 해당 id를 가진 동물 테이블의 튜플을 "확장"하는 animal_ptr_id를 갖습니다.

+0

답장을 보내 주셔서 감사합니다! –

관련 문제