我正在尝试使用元类生成记录其他模型的某些字段的模型。
我的计划是复制recording_fields
recording_model
(这是一个要记录的模型),并通过RecordModel
方法在contribute_to_class(cls,name)
的子类中注册它们em> django 的Field
。
通过这种方式,只要recording_model
recording_fields
中的一个Field
被更改,就可以使用信号自动创建记录。
问题是我必须使用recording_model
创建完全相同的max_length
个实例,包括数据库约束和要求(例如from django.models import Model
from django.models.base import ModelBase
class TimeStampedModel(Model):
...
class Meta:
abstract = True
...
class RecordModelMetaClass(ModelBase):
def __init__(cls, name, bases, attrs):
...
# Register 'recording_fields' of 'recording_model'
# to subclasses of RecordModel (not reference, deep copy)
# using `contribute_to_class`.
...
class RecordModel(TimeStampedModel):
__metaclass__ = RecordModelMetaClass
recording_model = NotImplemented
recording_fields = NotImplemented
class Meta(TimeStampedModel.Meta):
abstract = True
参数)。
所以情况是
RecordModel
其中Model._meta.get_field()
将是所有记录的抽象基类。
我知道我可以使用Field
方法来检索模型的Field
实例,但我需要的是实例的副本,而不是引用。
有没有办法在django中制作<LayoutTemplate>
个实例的深层副本?