Django Generic Foreign Key对于带有基数10的int()无效的文字

时间:2015-05-19 10:15:50

标签: python django django-models

我有一个使用通用外键的模型

class Flag(TimeStampedModel):

    content_type = models.ForeignKey(ContentType)
    object_id = models.PositiveIntegerField()
    content_object = generic.GenericForeignKey('content_type', 'object_id')

但是,当我尝试保存ForeignKey为base64编码的新Flag时,我收到错误:

  

ValueError:基数为10的int()的无效文字:' 7_p1seHP7FR0KxN9 + hHaCaNg'

看来Generic Foreign Key只能是一个int!我怎么能解决这个问题,因为并非我的所有密钥都是整数。

我是如何得到错误的:

  

u = User.objects.get(pk =" 7_p1seHP7FR0KxN9 + hHaCaNg")   Flag.objects.create(content_object = U)

1 个答案:

答案 0 :(得分:2)

here它说通用外键可以是char:

  

...例如,如果要允许与模型的泛型关系   无论是IntegerField还是CharField主键字段,都可以使用   CharField为模型上的“object_id”字段,因为整数可以   被get_db_prep_value()...

强制转换为字符串

可以是原始主键可以强制转换为强制转换的任何内容。您还可以以性价格使用TextField。