使用文件输入作为文本字段?

时间:2019-01-16 16:57:05

标签: django modelform

我有一个带有TextField的Django模型。当我使用ModelForm收集数据以添加/编辑此模型时,我在HTML表单中获得了一个文本区域,但我想使用文件输入。

我认为我需要做的是使用django.forms.FileInput或该输入的子类在表单类中为此字段设置小部件,但是我不清楚如何使这项工作有效(我并不肯定这是正确的方法)。

那么,我该如何使用文件输入来使用ModelForm收集模型的数据?

1 个答案:

答案 0 :(得分:1)

这是我想出的,为了简洁而省略和浓缩:

from django.contrib.gis.db.models import Model, TextField
from django import forms

class Recipe(Model):
    source = TextField(null=False, blank=True)
    ...

class AsTextFileInput(forms.widgets.FileInput):
    def value_from_datadict(self, data, files, name):
        return files.get(name).read()

class RecipeForm(forms.ModelForm):
    class Meta:
        model = Recipe
        fields = ('source', ...)
        widgets = {'source': AsTextFileInput(), ...}