我的django模型中有一个动态数据结构,基本上它是一个CharField,可以存储文本和数字:
class CSFeature(models.Model):
csfFeatureValue = models.CharField(max_length=200)
我的过滤器:
cslist = CSFeature.objects.filter(csfFeatureValue__gte=filter_value)
这里的问题是,进行字符串比较,例如
储值(csfFeatureValue)= 23
我如何在这里强制数字比较?由于这是一个通用的数据模型,我无法更改模型的数据类型......
答案 0 :(得分:0)
这似乎是一个糟糕的模式设计。我们假设鉴别器规则是' fsfFeatureValue'是数字。
您可以将保存方法覆盖到右对齐字段,而不是存储:
'13'
我们将存储:
' _total of 198 blank spaces_ 13'
这是:
class CSFeature(models.Model):
csfFeatureValue = models.CharField(max_length=200)
def save(self, *args, **kwargs):
if self.csfFeatureValue.isdigit():
self.csfFeatureValue = "{0:200}".format(int( self.csfFeatureValue ))
super(Model, self).save(*args, **kwargs)
现在你可以比较:
filter_value = "{0:200}".format( 3 )
cslist = CSFeature.objects.filter(csfFeatureValue__gte=filter_value)
我再说一遍:重新检查你的设计。这个答案只是解决相关问题的技术方法,但你的问题不是django查询api操作,而是模型设计。