既然你想過濾,你需要某種類型的DB支持你的領域和JSON領域將不會對你有價值。根據您的實際需要,您可以根據不同的 併發症級別使用一些不同的解決方案。一個建議是將數據序列化爲字符串。爲字符串/整數/浮點排序填充足夠的零。現在,您可以將所有內容過濾爲字符串(請確保您填充要過濾的值)。添加一個data_type列來獲取正確的python對象。
TYPES = [(int, 1), (Decimal, 2),(date, 3), (str, 4)]
class MyTag(models.Model):
name = models.CharField(max_length=50)
data_type = models.IntegetField(choices=TYPES)
value = models.CharField(max_length=100)
def set_the_value(self, value):
choices = dict(TYPES)
self.data_type = choices[type(value)]
if self.data_type == int:
self.value = "%010d" % value
# else... repeat for other data types
def get_the_value(self):
choices = dict([(y,x) for x,y in TYPES])
return choices[self.data_type](self.value)
(免責聲明:這是一個黑客,但可能不是最差的一個)。
來源
2011-06-19 11:36:04
Udi
我最終做了類似的事情。看起來大多數方法都很不好,所以我只是爲我的每個類型(int,date,str)存儲一個可能爲空的字段以及我正在使用的枚舉標記。 – jkeesh