我有一个包含设置的Django模型,因此模型的每个元素都是一个设置,可能的字段是setting_name,setting_value,setting_type等。
例如,如果我有一个名为 version 的设置,其中可能的值为整数(如1,2,3),则数据库中的字段如下:
我需要做的是检查设置的值和类型是否一致。
使用整数字段不是问题,因为我能够将值强制转换为Int以便检查它。
但是浮动和str怎么样?在第一种情况下(Float),如果字段包含int(即" 5" - > 5.0),我不想自动转换
对于字符串,而不是"演员方法"是不可能的,因为该字段始终是来自数据库的字符串。
有什么建议吗?
我使用的是Python 3.5和Django 1.11
提前谢谢
答案 0 :(得分:0)
你可以让你的模型变成这样:
public void sortString()
{
List<LabNine> sortedLabNineWords = new ArrayList<>(labNineWords);
Collections.sort(sortedLabNineWords,
Comparator.comparing(LabNine::display));
System.out.println("\n");
System.out.println("*****Your List Of Unique Word*********");
for (int i = 0; i < sortedLabNineWords.size(); i++) {
LabNine labnine = sortedLabNineWords.get(i);
System.out.println(labnine.display());
}
}
你也可以在这个模型中添加类函数来返回值,如下所示:
class Setting(models.Model):
TYPE_CHOICES = (
(1, "Integer"),
(2, "String"),
(3, "Boolean"),
(4, "Decimal")
)
key = models.CharField(max_length=32)
value = models.TextField()
value_type = models.IntegerField(choices=TYPE_CHOICES)
答案 1 :(得分:0)
您可以覆盖保存以检查一致性。如果type无效,将引发ValueError。
def save(self, *args, **kwargs):
if self.setting_type == 'int':
int(self.setting_value)
# Checking int first to avoid treating floats as valid int type
elif self.setting_type == 'float':
float(self.setting_value)
elif self.setting_type == 'string':
# Logic for validating string here
else:
raise ValueError('Setting type not recognized' + self.setting_type)
super(Setting, self).save(*args, **kwargs)