2016-09-11 2 views
0

안녕하세요 저는 몇 가지 필드를 만들고 믹스 인으로 변환하는 방법을 알고 싶었습니다.Django 모델 감사 믹스

다음과 같이 가정 해 봅시다.

마지막 4 개 필드를 다른 모델에 쓸 때마다 작성하지 않으려면 믹스 인을 만들고 싶습니다.

class AuditMixin(models.Model): 
    created_by = models.ForeignKey(get_user_model(), related_name='%(class)s_created_by') 
    modified_by = models.ForeignKey(get_user_model(), related_name='%(class)s_modified_by') 
    created_date = models.DateTimeField(editable=False) 
    modified_date = models.DateTimeField() 


    def save(self, *args, **kwargs): 
     if not self.id: 
      self.created_date = timezone.now() 
     self.modified_date = timezone.now() 
     return super(Supplier, self).save(*args, **kwargs) 

class Supplier(AuditMixin): 
    name = models.Charfield(max_length=128) 

가 어떻게이 related_name가 믹스 인가에 포함되어있는 클래스와 관련이 있는지 확인 할 수 있습니다 여기에

내가 만들 것 믹스 인인가? 또한 저장 함수에서 mixin이 포함 된 클래스가 반환되는지 확인하려면 어떻게해야합니까 (마지막 줄마다)?

감사합니다.

답변

2

먼저 super 전화에서 항상은 현재 클래스를 사용해야합니다. 따라서 항상 super(AuditMixin, self)...이되며 질문이 적용되지 않습니다.

%(class)s 구문을 사용하면 Django 자체가 related_name으로 현재 클래스 이름을 대체합니다. 따라서 다시 할 일이 없습니다. the model inheritance docs을 참조하십시오.