在装饰器中定义更多模型

时间:2017-09-28 14:12:42

标签: python django python-3.x design-patterns decorator

我有一个模式,我想尽可能重现,它是这样的:

class TranslatedThing(models.Model):
  name = models.Charfield(max_length=100)

class Thing(models.Model):
  translation = models.ForeignKey(TranslatedThing)
  name = models.Charfield(max_length=100)

这个想法是,在我的原始数据中,我有一些东西,它映射到一组简化的翻译东西。在许多不同的数据集中,我有许多不同类型的东西。

我已经使用Abstract类来降低此模式的复杂性:

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

  class Meta:
    abstract = True

-------

class TranslatedThing(AbstractThing):
  pass

class Thing(AbstractThing):
  translated = models.ForeignKey(TranslatedThing)

但我想自动创建和链接到TranslatedThing。装饰器可以吗? e.g。

@translate
class Thing(AbstractThing): pass

----

Thing.objects.filter(translation__name="foo") #works

我已经通读但看起来可能不是。在使用这种模式时,还有其他方法可以减少代码的重复吗?

0 个答案:

没有答案