在应用程序中与外部字段共享Django模型

时间:2015-02-16 04:44:31

标签: django django-models dry

我有一个Django项目,其中两个应用程序几乎完全相同,但出于多种原因,我想将它们分开。为了保持DRY,我创建了一个base_model文件。

# base_model.py
from django.db import models

class ModelOne(models.Model):
    name = models.CharField()

class ModelTwo(models.Model):
    name   = models.CharField()
    friend = models.ForeignKey(ModelOne)

我的两个应用程序名为app1& APP2。

如何导入这些模型,基本上我将为这两个模型提供4个表?

感谢。

更新1

我需要这两个版本的两个版本的原因是我想将它们保存在一个单独的数据库中,因为它们有单独的用途。

例如,假设我拥有一个带家具的家,还有一个家具店。我想为两套家具保留一个单独的清单。我家的家具将保存在家用服务器上,而我的商店家具则保存在工作服务器上。此外,我还想跟踪家具的颜色,这将是一个单独的表。

# base_model.py
from django.db import models

class Color(models.Model):
    name = models.CharField()

class FurnitureBase(models.Model):
    name   = models.CharField()
    color  = models.ForeignKey(Color)

对于商店应用,我需要跟踪定价,制造商等。对于家庭应用,我需要跟踪使用情况,年龄等。

1 个答案:

答案 0 :(得分:0)

这两个模型应该在Meta下定义为abstract = True。然后在你的两个应用程序中的每一个子类中,在每个应用程序中创建具体版本。类似的东西:

APP1 / models.py:

class App1ModelOne(base_models.ModelOne):
    pass


class App1ModelTwo(base_models.ModelTwo):
    pass

在django的文档中阅读抽象基类和模型继承以获取更多信息:https://docs.djangoproject.com/en/1.7/topics/db/models/#abstract-base-classes