翻訳可能なスラッグフィールドを持つモデルがあり、すべてのモデルで次のような操作を行うための同じコードを書いています。
def save(self, *args, **kwargs):
        for lang_code, lang_verbose in settings.LANGUAGES:
           if hasattr(self, 'slug_%s' % lang_code) and hasattr(self, 'name_%s' % lang_code):
                trans = getattr(self, 'name_%s' % lang_code, u"")
                if not trans:
                    trans = self.name_en 
                setattr(self, 'slug_%s' % lang_code, slugify(trans))
         super(Model, self).save(*args, **kwargs)
これらのモデルで同じコードを取り除こうとしています。抽象的で、models.Model から継承する親クラスを使用することを考えています。そして私は書いた:
class ModelSluggable(models.Model):
    #I also need to pass the fromField parameter to the parent class from child
    def __init__(self, fromField): 
        super(SlugWithTrans,self).__init__(fromField)   
    slug = models.SlugField(editable=False, max_length=200, db_index=True)
    class Meta:
        abstract = True
    def save(self, *args, **kwargs):
        for lang_code, lang_verbose in settings.LANGUAGES:
           if hasattr(self, 'slug_%s' % lang_code) and hasattr(self, 'name_%s' % lang_code):
                trans = getattr(self, 'name_%s' % lang_code, u"")
                if not trans:
                    trans = self.name_en 
                setattr(self, 'slug_%s' % lang_code, slugify(trans))
        super(SlugWithTrans, self).save(*args, **kwargs)
これは適切な方法ですか?