0

すべてのオブジェクト newmedia が同じ名前で保存されています。どうすればこれを修正できますか?

#view.py
if request.method == 'POST':
    formset = MediaFormSet(request.POST, request.FILES)
    if formset.is_valid():
        Page_key = Page.objects.get(pk=1)
        slide = SlideshowComponent(page=Page_key, order=0, label="slideshow", x=0, y=0, width=0, height=0, viewport_type="simle_page", keywords="slideshow")
        slide.save()      
        for filename, file in request.FILES.iteritems():
            name = request.FILES[filename].name               
        for form in formset.forms:        
            file_type = file.content_type
            if file_type == "image/png" or file_type == "image/jpeg" or file_type == "image/gif":
                newmedia = formset.save(commit=False)
                newmedia.filename = name
                newmedia.content_type = "photos"
                newmedia.save()
4

2 に答える 2

1

集計を省略したと思います:

    for filename, file in request.FILES.iteritems():
        name = request.FILES[filename].name               
        for form in formset.forms:        
            file_type = file.content_type
            if file_type == "image/png" or file_type == "image/jpeg" or file_type == "image/gif":
                newmedia = formset.save(commit=False)
                newmedia.filename = name
                newmedia.content_type = "photos"
                newmedia.save()

それ以外の場合は、最後に処理したファイルの名前が常に保持されます。

編集:実際、これもあなたが望むものではないと思います。すでに処理した formset.forms を追跡してから、処理されていない formset.forms に対応する名前を割り当てる必要があります。

于 2012-06-13T11:08:55.687 に答える
0

代わりに、私は 2 つの for を持っています。1 つの for だけですべてを行います。

for file in request.FILES.getlist('form-0-source'):
    file_type = file.content_type
    if file_type == "image/png" or file_type == "image/jpeg" or file_type == "image/gif":
        name= file.name.split('.')[0]
        newmedia = Media(source=file, filename=name, content_type = "photos", created='03/25/12')
        newmedia.save()                  
        image2 = ImageComponent(page=Page_key, order=0, label="imagem", x=0, y=0, width=0, height=0, viewport_type="simle_page", keywords="imagem", media=newmedia, is_slideshow='true')
        image2.save()
        slide.image.add(image2)                 
    else:
        return render_to_response('revista_digital/error.html', context_instance=RequestContext(request))
于 2012-06-14T11:40:46.673 に答える