2011-02-02 5 views
1

Django 프로젝트에는 두 가지 모델이 있습니다.Django - 다른 외래 키가있는 승인 하위 클래스를 하나의 클래스로 결합하십시오.

class Project(models.Model): 
    name = models.CharField(max_length=256) 

class Forecast(models.Model): 
    name = models.CharField(max_length=256) 
    project = models.ForeignKey(Project) 

나는 나에게 다음과 같은 두 가지 승인 서브 클래스 결합 할 수있는 독립 실행 형 응용 프로그램에 승인 모델을 구축하려는 :

class Approval(models.Model): 
    user = models.ForeignKey(User) 
    approved_object = [whatever I want ... a Project, a Forecast, a Checkbook, a Plan] 

은 다음과 같은보다 일반적인 무언가로

class ProjectApproval(models.Model): 
    approver = models.ForeignKey(User) 
    approved_object = models.ForeignKey(Project) 

class ForecastApproval(models.Model): 
    approver = models.ForeignKey(User) 
    approved_object = models.ForeignKey(Forecast) 

을 이게 가능해?

감사합니다,

마이크

당신이 할 수 물론

답변

1

은, 장고가 일반적인 관계 :

구현의 예는 다음이 될 것 here

장고 문서에 보라가 있습니다 :

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

class Approval(models.Model): 
    content_type = models.ForeignKey(ContentType) 
    object_id = models.PositiveIntegerField() 
    content_object = generic.GenericForeignKey('content_type', 'object_id') 
+0

와우, 나는 n 전체 튜토리얼 서적에 결코 노출되지 않았습니다. 지적 해 주셔서 고맙습니다. – MikeRand

관련 문제