我有一个使用通用外键的模型
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)
答案 0 :(得分:2)
here它说通用外键可以是char:
...例如,如果要允许与模型的泛型关系 无论是IntegerField还是CharField主键字段,都可以使用 CharField为模型上的“object_id”字段,因为整数可以 被get_db_prep_value()...
强制转换为字符串
可以是原始主键可以强制转换为强制转换的任何内容。您还可以以性价格使用TextField。