1

我有一个 django 应用程序,我需要将现有数据从文本文件导入到新数据库中。通常我会做这样的事情:

for i in lines():
    a = Mymodel()
    a.field1 = i[0]
    a.field2 = i[0]
    a.save()

这工作正常,但不进行数据验证(字段的匹配数据类型除外)。

为了通过网络界面输入数据,我编写了一些ModelForm表单,它们为我完成了所有的数据验证(在clean()方法中)。我确实知道如何使用request.POST作为输入来填充和验证表单,但是是否也可以在 python shell 上做同样的事情?我可以以某种方式将我的原始数据输入字典并用这些数据填充表单吗?

4

1 回答 1

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()
于 2012-09-07T19:22:01.407 回答