我有一个带有TextField的Django模型。当我使用ModelForm收集数据以添加/编辑此模型时,我在HTML表单中获得了一个文本区域,但我想使用文件输入。
我认为我需要做的是使用django.forms.FileInput或该输入的子类在表单类中为此字段设置小部件,但是我不清楚如何使这项工作有效(我并不肯定这是正确的方法)。
那么,我该如何使用文件输入来使用ModelForm收集模型的数据?
答案 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(), ...}