gpt4 book ai didi

python - Django inspectdb 为 MySQL mediumblob 生成 TextField

转载 作者:行者123 更新时间:2023-11-29 02:12:14 24 4
gpt4 key购买 nike

我有一个遗留的 MySQL 数据库。我决定使用“inspectdb”从数据库表中生成模型。我将一些图像存储为表中的 mediumblob 字段。

我看到 Django 生成了如下字段:

origimage = models.TextField(db_column='OrigImage')  # Field name made lowercase.

Django 文档说

If inspectdb cannot map a column’s type to a model field type, it’ll use TextField and will insert the Python comment 'This field type is a guess.' next to the field in the generated model.

我没有看到“此字段类型是猜测”。看起来不像 Django 将此视为猜测。 Django 是否将 mediumblob 转换为 TextField?我需要将其视为表单中的文件上传字段。我是否要将其更改为 ImageField 以便正确呈现该字段?

此外,在数据库列中存储图像的正确 dhango 数据类型是什么?

谢谢

最佳答案

它按设计工作。 Django 的内省(introspection)可以为您节省很多时间,但它只能做这么多,而且正如它在生成的模型文件中指出的那样,您必须进行一些手动清理。

以下是 the mysql introspection class 存在的一些映射取自 django 源代码:

    data_types_reverse = {
FIELD_TYPE.BLOB: 'TextField',
FIELD_TYPE.CHAR: 'CharField',
...
FIELD_TYPE.TINY_BLOB: 'TextField',
FIELD_TYPE.MEDIUM_BLOB: 'TextField',
FIELD_TYPE.LONG_BLOB: 'TextField',
FIELD_TYPE.VAR_STRING: 'CharField',
}

请注意,没有一个映射到 FileField,因为内省(introspection)不可能知道您使用该 blob 字段的确切目的。

如果您将图像内容存储在数据库字段本身中,迁移到 FileField 并使用 Django manage the storage 在任何情况下都不是一个坏主意。的文件。

关于python - Django inspectdb 为 MySQL mediumblob 生成 TextField,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48739143/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com