我有一个django应用程序,我需要将现有数据从文本文件导入新数据库。 通常我会做这样的事情:
for i in lines():
a = Mymodel()
a.field1 = i[0]
a.field2 = i[0]
a.save()
这样可以正常工作,但不会进行数据验证(字段的匹配数据类型除外)。
为了通过Web界面输入数据,我写了一些ModelForm
表单,它们为我做了所有数据验证(在clean()
方法中)。我知道如何使用request.POST
作为输入来填充和验证表单,但是在python shell上也可以这样做吗?我可以以某种方式将我的原始数据输入到一个字典中并使用这些数据填充表单吗?
答案 0 :(得分:1)
是,
在forms.py
中class FormA(forms.ModelForm):
class Meta:
model = Mymodel
def clean_field1(self):
#logic here
#return cleaned field1
在views.py中
def populate_dict(line):
dict = {'field1': line[0], 'field2': line[2], ... }
return dict
def populate(request):
for line in lines():
initial = populate_dict(line)
form = FormA(initial=initial)
if form.is_valid():
form.save()