django orm原理_django 动态创建一个模型的多个table name, 并通过 Django ORM 操作

本文介绍了如何在Django中动态创建模型和表,并通过ORM进行操作。首先展示了一个动态生成Log模型的函数,利用元类LogMetaclass改变模型名和表名。接着,展示了如何检查表是否存在,若不存在则使用schema_editor创建。最后,提醒了在获取模型时避免重复注册以防止RuntimeWarning。
摘要由CSDN通过智能技术生成

动态创建table, 并通过 Django ORM 操作.

动态的创建表

动态的创建模型其实就是在运行时生成 Model 类, 这个可以通过函数实现, 通过传参(今天的日期, 如: 20181211),然后生成新的模型类, Meta 中的 db_table 为log_20181211.def get_log_model(prefix):

table_name = 'log_%s' % str(prefix)

LOG_LEVELS = (

(0, 'DEBUG'),

(10, 'INFO'),

(20, 'WARNING'),

)

class LogMetaclass(models.base.ModelBase):

def __new__(cls, name, bases, attrs):

name += '_' + prefix  # 这是Model的name.

return models.base.ModelBase.__new__(cls, name, bases, attrs)

class Log(models.Model):

__metaclass__ = LogMetaclass

level = models.IntegerField(choices=LOG_LEVELS)

msg = models.TextField()

time = models.DateTimeField(auto_now=True, auto_now_add=True)

@staticmethod

def is_exists()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值