Django泛型外键对以10为基数的int()无效文本

2024-06-16 13:07:42 发布

您现在位置:Python中文网/ 问答频道 /正文

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

class Flag(TimeStampedModel):

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

但是,当我试图保存一个新的标志,其中ForeignKey是base64编码的,我得到了错误:

ValueError: invalid literal for int() with base 10: '7_p1seHP7FR0KxN9+hHaCaNg'

似乎通用外键只能是int!我怎么能解决这个问题,因为不是所有的密钥都是int。在

如何得到错误:

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


Tags: 模型idobjectsobjectmodelstype错误content
1条回答
网友
1楼 · 发布于 2024-06-16 13:07:42

here它表示通用外键可以是字符:

...For example, if you want to allow generic relations to models with either IntegerField or CharField primary key fields, you can use CharField for the “object_id” field on your model since integers can be coerced to strings by get_db_prep_value()...

它可以是原始主键可以强制转换到的任何对象。您还可以使用TextField,但要付出一定的性能代价。在

相关问题 更多 >