2012-03-15 17 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

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 

replace_partではPart、ないBasePartを添加することであることに注意してください。これは私が疑問に思っていることです - これがDjangoに受け入れられるかどうか、もしそうなら、これに隠された欠点や危険があるかどうか。

答えて

1

これは完全に受け入れられます。プロキシクラスのシナリオでは、子が基本的に親と同じであるにもかかわらず、親の代わりに子クラスを使用する場合と同様に、その子およびその子のみに限定することに注意してください。