我有一个模式,我想尽可能重现,它是这样的:
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
我已经通读但看起来可能不是。在使用这种模式时,还有其他方法可以减少代码的重复吗?