如何在Django中基于其他模型字段设置模型字段类型

时间:2018-11-12 13:22:59

标签: django django-models django-database

我的模型如下:

class Actor(Model):
    VALUE_CHOICES = (
        ('int', 'Integer'),
        ('str', 'String'),
        ('float', 'Float'),
        ('bool', 'Boolean')
    )
    type = models.CharField(max_length=5, choices=VALUE_CHOICES, default='str')
    _value = models.CharField(max_length=100, default='', db_column='value')

我想做的是基于“类型”字段中选择的数据,“ _值”字段将检查输入并将其转换为所需的类型。有人告诉我使用django @property可以做到这一点,但是我不确定它如何协同工作。

到目前为止,我已经尝试过此测试,但无济于事:

@property
    def value(self):
        return self._value

    @value.setter
    def value(self, val):
        print('This is self ', self, ' and val is ', val, ' and this is self ', self.request)
        self._value = val

如果有人有想法或可以将我引向正确的方向,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

我不确定该测试应该演示什么。如果要基于另一个字段的值转换值,请在getter中进行;您不需要二传手。

@property
def value(self):
    conversions = {'int': int, 'str': str, 'bool': bool, 'float': float}
    return conversions[self.type](self._value)