暂时使用Django Model实例

时间:2017-01-21 19:14:36

标签: django django-models

我有一个用例,其中特定的类可以是瞬态的也可以是持久的。瞬态实例是在PUT调用的JSON有效负载上构建的,可以持久保存到数据库,也可以在服务器调用期间使用,然后返回或丢弃。这种情况的最佳做法是什么?我的选择似乎是:

  • 编写两个类,其中一个是models.Model子类,另一个不是,并使它们实现相同的API,或者
  • 使用Model子类,但注意不要调用save()。

根据Django模型的常规用法,这些中的任何一个都是优选的吗?

2 个答案:

答案 0 :(得分:0)

为了保持尽可能<property name="url" value="jdbc:mysql://localhost:3306/test />,您可以使用抽象模拟类来推导您的模型:

DRY

现在,即使您在任何地方(即使是从class A(models.Model): # fields'n'stuff class TransientA(A): def save(*args, **kwargs): pass # avoid exceptions if called class Meta: abstract = True # no table created 继承的方法)都在其上致电save,您也会拍摄空白。

答案 1 :(得分:0)

你需要两个:

如果继承者仍然应该是具体模型,则

abstract = True非常有用,因此不应仅为父类创建表。它允许您选择退出multi-table inheritance,而是将共享属性复制到继承者表(abstract base inheritance)。

如果永远不应该继承继承类,那么

managed = False很有用。 Django迁移和fixtures不会为此生成任何数据库表。

class TransientModel(models.Model):
    """Inherit from this class to use django constructors and serialization but no database management"""
    def save(*args, **kwargs):
        pass  # avoid exceptions if called

    class Meta:
        abstract = True  # no table for this class
        managed = False  # no database management

class Brutto(TransientModel):
    """This is not persisted. No table app_brutto"""
    #do more things here
    pass