我创建了一个继承自OneToOneField
::
class MeasureField(models.OneToOneField):
""" A custom Django model Field for Measure """
__metaclass__ = models.SubfieldBase
description = _("Measurement")
def __init__(self, *args, **kwargs):
self.measure_types = args
args = (Measure,)
if 'to' in kwargs.keys():
args = tuple()
super(MeasureField, self).__init__(*args, **kwargs)
def deconstruct(self):
name, path, args, kwargs = super(MeasureField, self).deconstruct()
args = self.measure_types
return name, path, args, kwargs
它只需要一个列表参数(args)并且始终与模型Measure相关。但是,当我尝试将它放在模型上并创建一个模型时:
basic_condition = MeasureField(
'Density',
related_name="basic_condition_of_product",
)
我有以下错误:
AttributeError: 'Product' object has no attribute 'basic_condition_id'
我知道相关字段会为数据库添加一个附加_id
的属性。但我不知道为什么我的自定义字段不会这样做。
我该怎么创造它?
答案 0 :(得分:0)
我实际上不应该添加元类SubfieldBase
。没有它,它工作正常。