模型没有可迭代的“由用户创建”django

时间:2015-04-02 23:33:26

标签: python django django-models django-forms

我有一个问题,当我尝试上传文件时,我正在尝试显示用户上传文件但无法正常工作。

我的模特是这样的:

class Document(models.Model):
 id = models.AutoField(primary_key=True)
 programa=models.CharField(max_length = 100)
 materia=models.CharField(max_length = 50)
 profesor=models.CharField(max_length = 50)
 usuario=models.ForeignKey(Usuario)
 add=models.DateTimeField ( auto_now = True )
 archivo= models.FileField(upload_to="archivos/",storage=OverwriteStorage(),null = False) 

 def __unicode__(self):
        return self.programa

 class Meta:
    db_table = u'utp_document'

我的观点是:

@login_required(login_url='/')
def upload(request):

 if request.method=='POST':

     form=DocumentForm(request.POST,request.FILES,)
     if form.is_valid():
         instances = form.save(commit=False)
         for instance in instances:
            instance.usuario = request.user
            instance.save()



         return HttpResponseRedirect('/menu/')
 else:
     form=DocumentForm()

 return render_to_response('formulario_modal.html', {'form': form}, context_instance=RequestContext(request))

我关注了这篇文章Django - Auto populate created_by field outside django admin using form

这是我的form.py:

class DocumentForm(forms.ModelForm):
 class Meta:
    model = Document
    exclude = ('usuario',)

问题是我尝试新上传文件时出现此错误:

  

'文档'对象不可迭代

我做错了什么?

1 个答案:

答案 0 :(得分:0)

form.save()返回单一模式实例

instance = form.save(commit=False)
instance.usuario.user = request.user
instance.save()

仅供参考,在您链接的帖子中使用了formset,这就是循环的原因。