如何不在django中重复使用类似的模型对象

时间:2013-07-25 00:32:36

标签: django django-models dry

我在两个不同的应用程序(app1和app2)中有2个对象object1和object2。 Object1与Object2有1对多的关系。每个对象都有一个设置模型对象。

设置相同,但每个设置与其各自对象具有一对一的关系。

如果这两个对象有自己的设置或者它们是否共享设置对象,这会重复我自己吗?

目前的结构如下:

class Object1(models.Model):
        name = models.CharField(max_length=255)

class Object2(models.Model):
        object1 = models.ForeignKey(Object1)



#This is in app 1
class Setting(models.Model):
    object1 = models.OneToOneField(Object1)
    setting_count = models.IntegerField(default=0)

#This is in app 2
class Setting(models.Model):
    object2 = models.OneToOneField(Object2)
    setting_count = models.IntegerField(default=0)

1 个答案:

答案 0 :(得分:4)

听起来你想要一个抽象的基类。

class SettingBase(models.Model):
    setting_count = models.IntegerField(default=0)

    class Meta:
        abstract = True

class Setting1(SettingBase):
    object1 = models.OneToOneField(Object1)

class Setting2(SettingBase):
    object2 = models.OneToOneField(Object2)