Django ForeignKey到通用Python数据类型?

| 我正在尝试创建一个django模型,该模型具有对某种python类型的引用作为其字段之一,该类型可以是整数,字符串,日期或十进制。
class MyTag(models.Model):
    name = models.CharField(max_length=50)
    object = (what goes here??)
我知道,如果我想要其他任何模型的外键,都可以使用GenericForeignKeys和content_types。我如何有一个引用任何python类型的模型字段?到目前为止,我唯一想到的想法是创建一个简单的对象包装器模型并使用GenericForeignKeys。 有什么办法吗?     
已邀请:
        由于您要过滤,因此您需要为字段提供某种数据库支持,而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)
(免责声明:这是一种hack,但可能不是最糟糕的)。     
        
JSONField
可以工作,但不能按原样处理
Decimal
。     
        如果您不需要筛选该字段,则可以使用JsonField或像这样对对象进行腌制 第二种方法将使您几乎可以存储任何类型的python数据类型,尽管它只能从python代码中使用。 如果您需要过滤这些数据,则应该只创建一种数据类型的单独字段。     

要回复问题请先登录注册