【问题标题】:How to create a custom related model field?如何创建自定义相关模型字段?
【发布时间】:2014-11-13 09:35:02
【问题描述】:

我创建了一个继承自 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 的属性。但我不知道为什么我的自定义字段不这样做。

我应该如何创建它?

【问题讨论】:

    标签: django django-models django-1.7


    【解决方案1】:

    我实际上不应该添加元类SubfieldBase。没有它也能正常工作。

    【讨论】:

      猜你喜欢
      • 2015-04-16
      • 2017-12-28
      • 1970-01-01
      • 2015-01-11
      • 1970-01-01
      • 1970-01-01
      • 2021-06-05
      • 2017-11-17
      • 1970-01-01
      相关资源
      最近更新 更多