2011-02-09 5 views

답변

2

이렇게 할 방법이 없지만 일반 키를 사용할 수 있습니다.

from django.contrib.contenttypes import generic 
from django.contrib.contenttypes.models import ContentType 

class UserProfileOne(models.Model): 
    pass 

class UserProfileTwo(models.Model): 
    pass 


class UserProfile(models.Model): 
    content_type = models.ForeignKey(ContentType) 
    object_id  = models.PositiveIntegerField(db_index=True) 
    content_object = generic.GenericForeignKey('content_type', 'object_id') 

예 : 당신이 더 많은 정보를 정기적으로 제공 할 수있는 경우

UserProfile.objects.create(content_object=any_profile_instance) 

User(pk=1).get_profile().content_object.some_special_field 

하는 것이 가능있을 때 더 나은 솔루션 :

+0

이 기능은 상속 된 프로필에서 작동합니다. – goh

+0

그것은 모든 콘텐츠 유형을 가리킬 수 있습니다. – programmersbook

0

여러 프로필을 사용하려고 더 많은 번거 로움이 될 수를 찾을 수 UserProfile의 단순한 구성으로

일반 외래 키로 UserProfile을 사용하거나 UserProfile을 완전히 차단하고 User 외래 키로 개별 모델을 만드는 것이 좋습니다.

이러한 추가 사용자 프로필에 많은 양의 데이터를 첨부하려면 UserProfile과 별도의 모델로 유지해야합니다. UserProfile에 대한 저의 개인 의견은 멋진 집이없는 사용자 데이터의 덤핑 장이 될 수 있다는 것입니다.

데이터가 프로필 정보 인 것처럼 보이기 때문에 UserProfile을 사용해야한다고 생각하지 마십시오. 나는 UserProfile이 모든 문제를 해결하려고 의도 된 적이 없다고 생각합니다. 나는 이것을 User 모델의 코드가 django 코드하에 있다는 사실을 보완하는 방법으로 본다. 그리고 우리는 사용자 데이터를 추가하기 위해 일반적으로 엉망이되지 않는다.

관련 문제