新手怀疑,需要一些帮助



一直在寻找这个答案的几天...在django上是全新的,但是却疯狂地阅读,尽管还不够...

我想构建一个简单的数据输入系统。查尔德(Charfield)获取文件名,我在选择框中显示文件中的行,允许删除行。其余的保存在提交中保存。

model.py

class Inputmodel(models.Model):
    data = models.CharField(max_length=128)

views.py

from forms import InputForm 
from proj.models import Inputmodel

def ipdb_input_add(request):
    if request.method == 'GET':
       form = InputForm(request.GET)
       if form.is_valid():
           dlist = []
           if 'filename' in request.GET and request.GET['filename']:
               filename = request.GET['filename']
               listp = open(filename, 'r').read 
               with open(filename, 'rt') as f:
                   myfile = File(f) 
                   for line in myfile: 
                       dlist.append(line) 
               myfile.close
           for d in dlist:
               item = Inputmodel(data=d)
               item.save 
           return render_to_response('base.html', { 'form': form }) 

forms.py

from django import forms
from ip_db.models import Inputmodel
class InputForm(forms.Form):
    filename = forms.CharField(max_length=128)
    box      = forms.MultipleChoiceField(
                   required=False, 
                   choices=Inputmodel.objects.all().values_list('id', 'ipaddr'),
                   widget=forms.SelectMultiple(attrs={
                       'style':'width:200px;height:300px;'
                   }       
               ))     

这不是一项艰巨的任务,我担心我错过了一种更简单的方法。有建议吗?

非常感谢

一些可能会有所帮助的点:

  1. 您只有在用户使用" get"时才会渲染表单。这样,当您打开URL时,您什么都看不到。
  2. 您应该使用forms.cleaned_data来获取表单的值。在这里检查
  3. 如果用户试图上传文件(我不太了解),我将在表单中使用docfile = forms.FileField(label='Select a file:', help_text='')
  4. 然后获取文件,您可以在视图中使用data_raw=request.FILES['docfile'].read()
  5. 最后,更容易的实现将是创建选择文件的第一个形式。提交后,我将用文件的行初始化第二个表格。要在此处初始化表格检查,第二个提交将保存数据。

最新更新