当前位置: 首页 > 面试题库 >

Django Blob模型字段

葛宏爽
2023-03-14
问题内容

如何使用Django的ORM和PostgreSQL后端存储二进制数据的“ blob”?是的,我知道Django对这种事情不屑一顾,是的,我知道他们更喜欢你使用ImageField或FileField来表示,但这足以说明我的应用程序不切实际。

我曾尝试通过使用TextField对其进行破解,但是当我的二进制数据未严格确认模型的编码类型(默认为unicode)时,会出现偶尔的错误。例如

psycopg2.DataError: invalid byte sequence for encoding "UTF8": 0xe22665

问题答案:

这可能是将二进制数据存储在TextField中的最简单解决方案。

import base64

from django.db import models

class Foo(models.Model):

    _data = models.TextField(
            db_column='data',
            blank=True)

    def set_data(self, data):
        self._data = base64.encodestring(data)

    def get_data(self):
        return base64.decodestring(self._data)

    data = property(get_data, set_data)

还有一些其他片段可能会有所帮助。



 类似资料:
  • 字段选项 以下参数适用于所有字段类型。全部都是可选的。 null 如果是 True,Django 将允许在数据库该字段的值为 NULL。默认是 False。 blank 如果是 True,该字段被允许为空值。默认是 False。 !> 请注意,这不同于 null。null 纯粹是与数据库相关的,而 blank 与验证相关。如果一个字段有 blank=True,表单验证将允许输入一个空值。如果一个字

  • 在上一节中,字段的配置是这样的。S则是引入的Sequelize,为了编写方便,重命名了一下。 { email: S.STRING, name: S.STRING } 在 define 函数的声明里面,需要传入的字段配置项其实是 DefineAttributes 类型。 [name: string]: string | DataTypeAbstract | DefineAttribu

  • 问题内容: 我正在开发一个多租户应用程序,其中一些用户可以定义自己的数据字段(通过管理员)以收集表单中的其他数据并报告数据。后一点使得JSONField不是一个很好的选择,所以我有以下解决方案: 请注意,CustomDataField如何具有Site的ForeignKey-每个Site将具有一组不同的自定义数据字段,但是使用相同的数据库。然后可以将各种具体的数据字段定义为: 这导致以下用途: 但这

  • BSD套接字构建在基本的UNIX®模型上: 一切都是文件。那么,在我们的例子中, 套接字将使我们接收一个HTTP文件, 就这么说。然后我们要负责将 PNG文件从中提取出来。 由于联网的复杂性,我们不能只使用 open系统调用, 或open() C 函数。而是我们需要分几步 “打开”一个套接字。 一旦我们做了这些,我们就能以处理任何文件描述符 的方式处理套接字。我们从它读取 (read),向它写入(

  • 我试图检索一个模型实例及其相关的一个,以便只从两者检索某些字段。这和这两个问题回答了如何为相关模型做到这一点,它对我来说很有效: 但是,如果我也试图限制模型的字段,则根本无法检索数据:

  • 问题内容: 我正在重写使用内部框架编写的旧REST服务,以使用Spring。我有一个带有POST方法的Controller,该方法采用一个参数作为POST或正文。按照多个StackOverflow答案,我使用了@ModelAttribute批注并创建了一个模型。 我的问题是,旧的REST API在蛇形情况下使用属性名称-say 。我希望我的Java代码遵循Java命名约定,因此在我的模型中该字段称