2012-03-15 4 views
0

외래 키에 프록시 모델 인스턴스를 사용할 수 있습니까?Django의 프록시 유형 및 외래 키

이렇게하는 데 단점이나 위험이 있습니까?

샘플 코드 :

base_models.py

class BaseWidget(models.Model): 
    name = models.CharField(max_length=100) 
    code = models.CharField(max_length=100) 

class BasePart(models.Model): 
    name = models.CharField(max_length=100) 
    code = models.CharField(max_length=100) 
    widget = models.ForeignKey(BaseWidget, related_name="parts") 

models.py replace_part에서이 Part 아닌 BasePart을 추가하는 것을

from base_models import BaseWidget, BasePart 

class Part(BasePart): 
    class Meta: 
     proxy = True 

class Widget(BaseWidget): 
    def replace_part(self, old_code, new_code): 
     self.parts.filter(code=old_code).delete() 
     self.parts.add(Part.objects.get(code=new_code)) 
    class Meta: 
     proxy = True 

알 수 있습니다. 이것은 내가 궁금해하는 것입니다 - 이것이 장고에게 받아 들여질 수 있는지, 만약 그렇다면, 숨겨진 단점이나 위험을 감수하는 것이 있다면.

답변

1

완벽하게 받아 들일 수 있습니다. 부모 클래스 대신에 자식 클래스를 사용할 때와 마찬가지로 프록시 클래스의 시나리오에서 자식이 기본적으로 부모와 같은 경우에도 해당 자식과 그 자식만으로 제한한다는 점을 명심하십시오. .