Django admin:将多个项目从textfield添加到数据库

时间:2010-12-17 03:37:06

标签: django django-admin

我需要制作一个小应用程序,其中只使用了django-admin。

所以我有一个带有一个表的模型,它有一个列,比方说表叫做项目,列名是“name”。

我希望每行代替一个字段 - 一个文本字段。此文本字段的每一行都将作为新行添加到表“items”。

编辑:将文件上传字段也很好...然后手动解析数据

我甚至无法想象从哪里开始。

1 个答案:

答案 0 :(得分:1)

这是一个非常令人困惑的问题。

您有一个名为Items的表。表Items中的一列是名为Name的文本字段。文本域Name中的每一行都将添加到与新数据库行相同的表中。

如果需要将文本字段分成单独的数据库行,为什么在文本域name中有多行?

一个想法是设置一个ModelAdmin,覆盖save_model,你劫持对象,永远不保存它,并在迭代文本字段时手动创建“Items”。

此示例有效

class ItemsAdmin(admin.ModelAdmin):
    def save_model(self, request, obj, form, change):
        data = obj.name

        items = [x for x in data.split('\n') if x and not x.isspace()]
        for item in items:
            Items.objects.create(name=item)

至于文件字段......

有一个文件字段:models.FileField()

但是对于这个,你应该只设置一个网址&查看:“/ upload-file /”,否则您的数据库中的每一行都会有一个空白的FileField。

如果您真的想要使用管理员应用,请覆盖add_view模板并输入您自己的上传表单并单独处理该文件

<input type="file" name="myfile"> + in django view request.FILES['myfile']