我有一个用例,其中特定的类可以是瞬态的也可以是持久的。瞬态实例是在PUT调用的JSON有效负载上构建的,可以持久保存到数据库,也可以在服务器调用期间使用,然后返回或丢弃。这种情况的最佳做法是什么?我的选择似乎是:
根据Django模型的常规用法,这些中的任何一个都是优选的吗?
答案 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