当前位置: 首页 > news >正文

找人做网站维护多少钱/现在有哪些培训学校

找人做网站维护多少钱,现在有哪些培训学校,拓者设计吧现代效果图,手机网站排名优化软件动态创建table, 并通过 Django ORM 操作.动态的创建表动态的创建模型其实就是在运行时生成 Model 类, 这个可以通过函数实现, 通过传参(今天的日期,如: 20181211),然后生成新的模型类, Meta 中的 db_table 为log_20181…

动态创建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, 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():

return table_name in connection.introspection.table_names()

class Meta:

db_table = table_name

return Log

可以看到, 通过函数生成不同的 Log Class. 注意LogMetaclass和__metaclass__,元类可以在运行时改变模型的名字,table 的名称我们可以通过db_table定义,类的名称可以通过覆盖元类的方法定义。

print cls.__name__

Log_20181211

print cls._meta.db_table

log_20181211

使用

使用直接通过函数, 获取当前日期的 Log 模型, 然后通过is_exists判读表是否创建, 没有创建则创建对应的表.

def index(request):

today = date.today().strftime("%Y%m%d")

# RuntimeWarning: Model '__main__.logclasslog_' was already registered.

# Reloading models is not advised as it can lead to inconsistencies

# most notably with related models.

# 如上述警告所述, Django 不建议重复加载 Model 的定义.

# 作为 demo 可以直接通过get_log_model获取,无视警告.

# 所以这里先通过 all_models 获取已经注册的 Model,    # 如果获取不到, 再生成新的模型.

try:

cls = apps.get_model('__main__', 'Log_%s' % today)

except LookupError:

cls = get_log_model(today)

if not cls.is_exists():

with connection.schema_editor() as schema_editor:

schema_editor.create_model(cls)

log = cls(level=10, msg="Hello")

log.save()

return HttpResponse('

%s

' % cls._meta.db_table)

上面获取 cls 部分, 这里的代码先通过apps的已经注册的 all_models 获取,否则一个模型的第二次执行定义代码就会抛出RuntimeWarning警告,在模型的初始化函数都会注册此模型,最好不要重复注册. 先通过 apps.get_model 获取这个模型, 如果没有获取到则通过get_log_model初始化新的模型. 这样做更加稳妥一点.

http://www.jmfq.cn/news/4891573.html

相关文章:

  • 介绍国外的网站有什么不同/广州网络推广万企在线
  • wordpress feed 缩略图/谷歌优化工具
  • 网站建设费用包括/2022年适合小学生的新闻
  • xp花生壳做网站/国外免费网站服务器
  • 北京做网站的大公司/百度网盘服务电话6988
  • 网站投票怎么做/seo关键词优化外包公司
  • 做网站利润/aso优化榜单
  • 建英文网站费用/北京互联网公司
  • 网站开发地图板块浮动/新媒体运营培训课程
  • 移动网站开发试验报告/hyein seo是什么牌子
  • 莆田高端网站建设/如何免费自己创建网站
  • 做刷单哪个网站找小白/百度推荐现在为什么不能用了
  • 电子商务型网站/如何制作网页链接
  • 音乐网站前台模板/小红书指数
  • 网站的企业风采怎么做/企业网络营销的模式有哪些
  • 上每网站建设/长沙正规关键词优化价格从优
  • 汽车网站flash模板/十大室内设计网站
  • 给网站做h5缓存机制/seo门户
  • 任丘市建设局网站/中级经济师考试
  • 公司网站建设制度/优化网站有哪些方法
  • 网站开发体会范文/手机百度网页版入口
  • wordpress的用户名与密码/宁波seo推广方式排名
  • 网站平台建设视频教学/网站推广平台排行
  • wordpress百度收录之自动推送设置/山东seo网络推广
  • 有经验的江苏网站建设/今日短新闻20条
  • 武汉网站建设制作/微信朋友圈广告投放收费标准
  • 成都比较好的网站制作公司/朋友圈推广广告
  • ps做的图怎么做成网站前端/沈阳网站推广优化
  • 建设银行网站打不开别的网站可以用吗/推广管理
  • 网站的宣传方法有哪些/seo搜索引擎优化包邮