2013-07-09 2 views
2

이렇게 장고 모델 계층 구조를 만드는 방법이 있습니까?Django 모델의 Mixin 상속

class LikableObjectMixin(models.Model): 
    # mixin for all likable objects: posts, photos, etc 
    likers = models.ManyToManyField(Account) 

    class Meta: 
     abstract = True 

    def save(): 
     super(LikableObjectMixin, self).save() 


class Post(LikableObjectMixin, models.Model): 
    message = models.TextField(_('Post')) 
    author = models.ForeignKey(settings.AUTH_USER_MODEL, related_name='posts', blank=True, null=True) 
    created = models.DateTimeField(auto_now_add=True) 

남쪽 상속 이런 종류의 일을 할 수 ? 이것은 모델 계층을 구축하는 적절한 방법입니까?

장고 = 1.5.1

+0

그건 충분히'클래스 포스트 (LikableObjectMixin)'다른 클래스는 이미 models.Model' 내가 아는 – matino

+0

'에서 상속하지만, 이것은 단지 예를 들어 내가 다른 모델이 믹스 인을 사용하고자하기 때문에 어떤 다른 모델로부터 상속 될 수있다. – kharandziuk

답변

1

예, 완벽합니다. South는 믹스 인을 상속받는 모든 모델에 대해 적절한 m2m 관계를 만듭니다. save 메소드를 명시 적으로 작성하지 않아도됩니다. 그래서 :

class LikableObjectMixin(models.Model): 
    likers = models.ManyToManyField(Account) 

    class Meta: 
     abstract = True 


class Post(LikableObjectMixin): 
    message = models.TextField(_('Post'))