单个Django模型,多个表?

单个Django模型,多个表?,第1张

单个Django模型,多个表?

我相信,你可以创建一个工厂函数,该函数将通过动态db_table返回你的模型。

def getModel(db_table):  class MyClass(models.Model):     # define as usual ...     class meta:       db_table = db_table  return MyClassnewClass = getModel('29345794_table')newClass.objects.filter( ...

编辑:

_meta
每次调用此函数时,Django不会创建类属性的新实例。为
_meta
它创建一个新实例取决于类的名称(Django必须将其缓存在某个地方)。元类可用于在运行时更改类的名称:

def getModel(db_table):  class MyClassmetaclass(models.base.Modelbase):    def __new__(cls, name, bases, attrs):      name += db_table      return models.base.Modelbase.__new__(cls, name, bases, attrs)  class MyClass(models.Model):    __metaclass__ = MyClassmetaclass    class meta:      db_table = db_table  return MyClass

不知道是否可以在已经定义的类上动态设置它。我自己还没有完成此 *** 作,但可能有效。

你可以随时进行设置。

>>> MyModel._meta.db_table = '10293847_table'>>> MyModel.objects.all()


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5036903.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存