0

編集:

Q1はenctype="multipart/form-data" 帳票テンプレートに追加することで解決。Q2についてコメントをお願いします。

Qn1: Forms からアップロードされた csv ファイルを読み込もうとすると、次のエラーが表示されます。この行に例外がある可能性があります。

records = csv.reader(f)

何を渡すかわからない。以下のコードを参照してください。

Qn2:モデルで csv 処理を行っても問題ありませんか (csv はドメイン データをアップロードするためのものであるため、ドメイン オブジェクトとして検証/永続化されます)。私は Django/Python を初めて使用します。これまでに見た例のほとんどには、モデルのメソッドがあまりありません。これは、モデルに関連付けられたすべてのビジネス ロジックをその中に取り込むという、私が以前使用していたものとは少し異なります。django での慣用的な使い方に疑問を感じます。

例外:

Django Version: 1.4.1
Exception Type: TypeError
Exception Value:    
argument 1 must be an iterator

意見:

def upload(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            w = Testme()
            w.importCsv(form.cleaned_data["file"])
            return HttpResponseRedirect('/')
    else:
        form = UploadFileForm()
    return render_to_response('setup.html', {'form': form},context_instance=RequestContext(request))

形:

class UploadFileForm(forms.Form):
    title = forms.CharField(required=False)
    file = forms.FileField(required=False)

モデル:

class Testme(models.Model):
    code = models.IntegerField()
    ctu = models.IntegerField()
    address = UsAddress

    def importCsv(self, f):
        records = csv.reader(f)
        for line in records:
            logger.debug(line)
4

1 に答える 1

0

request.FILESオブジェクトから直接ファイルを渡してみてください。

w.importCsv(request.FILES['file'])
于 2012-09-12T12:38:49.703 に答える