2013-10-30 4 views
5

내 Django 프로젝트에는 각 django 사용자에 대한 프로필이 있고 프로필은 정보 모델과 관련이 있습니다. 두 관계 모두 OneToOne입니다. 대부분 사용자의 프로필과 정보 모델을 모두 사용하고 있기 때문에 데이터베이스를 다시 히트하지 않기 위해 기본적으로 선택되도록하고 싶습니다. 장고 인증을 사용하여이를 수행 할 수있는 방법이 있습니까?OneToOne 필드와 관련된 자동 선택

답변

0

맞춤형 사용자 모델 용도로 django> = 1.5를 사용하십시오. 관련 기능을 선택하십시오.

user = User.objects.select_related('profile_related', 'info_related') 
0

나는 잠시 여기에 왔다는 것을 알고 있지만 다른 사람이 비슷한 상황에 직면 할 경우를 대비하여 해결책을 추가하고 있습니다.

class ProfileManager(models.Manager): 
    # use_for_related_fields = True 
    def get_queryset(self): 
     return super(ProfileManager, self).get_queryset().select_related('user') 

: 장고 (V1.8 심지어 V1.7 기준)의 프로필이 같은 관리자를 가질 수

사용자 매니저 (쿼리 할 때 사용 .objects)로 할 수 있습니다 그런 다음 모델 :

class Profile(models.Model): 
user = models.OneToOneField(
    User, 
    primary_key=True, 
    on_delete=models.CASCADE 
    ) 

# your fields ... 

# the manager 
objects = ProfileManager() 

# ... 

그런 다음 프로필에 대한 모든 쿼리도 자동으로 관련 사용자를 선택합니다. 정보 모델도 포함하도록이 코드를 확장 할 수 있습니다.

행운을 빈다.

관련 문제