如何基于django中的其他模型字段设置模型字段类型
我的模型如下:如何基于django中的其他模型字段设置模型字段类型,django,django-models,django-database,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')
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')
我试图做的是,根据在“type”字段中选择的数据,“\u 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
如果有人有一个想法或能把我引向正确的方向,我将不胜感激。我不确定该测试应该演示什么。如果要基于另一个字段的值转换一个值,请在getter中进行转换;你不需要二传手
@property
def value(self):
conversions = {'int': int, 'str': str, 'bool': bool, 'float': float}
return conversions[self.type](self._value)
谢谢你,丹尼尔,成功了。你能解释一下为什么转换dict是必需的,如果我想创建一个try/catch,那么应该查找什么是好的属性错误吗?这不是必需的,你可以执行一系列if/elif语句-但关键是self.type的值是一个字符串,你需要从那里得到实际的类型方法本身。如果找不到查找,dict将引发KeyError。