python - 如何在django数组字段中存储文件

标签 python django postgresql

我正在 django 1.8 alpha 中使用 django.contrib.postgres.fields.ArrayField 并尝试将其与文件字段一起使用。

这是一个虚构论坛中的帖子:

# coding=utf-8
from backend.core.models import Team
from django.contrib.postgres.fields import ArrayField
from django.db import models
from django.db.models import FileField


class Post(models.Model):

    title = models.CharField(max_length=256)
    content = models.TextField()

    team = models.ForeignKey(Team, related_name='posts')

    attachments = ArrayField(FileField(), null=True)

    def __str__(self):
        return self.title

迁移成功,一切看起来都很棒。

但是:Django Admin 不支持这个字段。

我如何在代码中实现它,如何将新文件存储/添加到此数组字段并将其引用存储在数据库中?

最佳答案

目前,我认为 django.contrib.postgres.fields.ArrayField 正在积极开发中。 django.contrib 包是 new to django 1.8 (仍处于测试阶段)所以我认为这个功能还为时过早。

您看到的文本字段是一个分隔字符串,保存在数组中。这对 FileFields 数组有点意义,因为 FileField 保存 URL 字符串而不是文件的 blob(据我所知)。

\d table 给出了关于该列的表信息,如下所示:

arrayexample=# \d example_post
Column      | Type                     | Modifiers
--------------------------------------------------
attachments | character varying(100)[] |

目前您在管理中看到的字段是从 here 创建的.注意它继承自 forms.CharFieldFileField 使用 forms.ClearableFileInput .

我认为您正在寻找的功能目前在 Django 中不存在,但我认为构建它是可行的。就个人而言,我会通过子类化现有的 ArrayField 并覆盖 formfield 来构建它。使用我的自定义 form_class 更好地处理 FileFieldArray

我希望这会有所帮助,我也没有看到任何针对此功能的公开拉取请求。

关于python - 如何在django数组字段中存储文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28677964/

相关文章:

python - 是否可以为小部件设置标准样式?

python - D 像 Python 描述符那样的元编程?

django - 如何使用 AngularJS 处理 Django Rest Framework 中的翻译(多语言)Web 服务?

python - 小数(0.19)会产生很长的数字吗?

sql - PostgreSQL 函数不能正常工作

python - 如何旋转数据框

Python手写文本提取

python - django.core.exceptions.ImproperlyConfigured : Could not resolve URL for hyperlinked relationship using view name "user-detail"

postgresql - PostgreSQL 中的多个单独连接

ruby-on-rails - Rails Postgres 查询排除包含连接上三个记录之一的任何结果