如何在django中建模(继承模型,其中每个继承的模型都有一个唯一的方法)

时间:2010-07-01 18:48:22

标签: python django inheritance proxy model

如何在django中建模:

1)拥有制造商的基础网络

2)在每个网络下,他们可能是几个经销商

3)系统用户可以通过经销商访问项目

4)如果用户通过分销商访问该项目,我们希望翻译该项目,每个制造商都有自己的翻译

class Manufacturer(models.Model):
    networkname = models.CharField(max_length=128)

    class Meta:
        proxy = True

class Distributor(models.Model):
    man = models.ForeignKey(Manufacturer)

class ManuType1(Manufacturer):
    def translate(self, str):
        return 'translate'

class ManuType2(Manufacturer):
    def translate(self, str):
        return 'translate'

在这种情况下,我们会收到某个经销商的请求。我们确定该经销商,我们想称经销商制造商翻译方法。 这看起来像是在django中对此进行建模的方法(我确信有很多方法可以做到这一点) 所以任何输入/反馈都是有用的。

我遇到问题(也许不太了解python)给了ManuType1的分销商如何在运行时调用translate函数?

使用其他术语这可能是一个很好的探索模式,只是不确定如何准确地表达它。

1 个答案:

答案 0 :(得分:0)

如果dist是分发服务器的实例,那么您可以dist.man来获取Manufacturer实例。由于多表继承在Django中的工作方式,您需要访问制造商上存在的OneToOneField到子类实例。问题在于找出存在哪个子类实例。 storing the ContentType of the subclass in the Manufacturer instance可以使这更容易。