2015-04-02 65 views
2

我有一个问题,当我尝试上传文件我试图显示用户上传文件,但不工作。模型没有迭代“由用户创建”django

我的模型是这样的:

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',) 

的问题是什么,我尝试新的上传文件得到这个错误:

'Document' object is not iterable

我在做什么错?

回答

0

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

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

仅供参考,在后已经连结了formset使用这是一个循环的原因。

+0

但我得到的错误,我一直在试图解决这个问题是“不能分配”>“:”Document.usuario“必须是”Usuario“实例。 – papo 2015-04-02 23:42:33

+0

@papo这是更好的和不同的问题。你能说明'Usuario'模态是如何定义的吗?谢谢。 – alecxe 2015-04-02 23:43:28

+0

类UsuarioForm(forms.ModelForm): 类元: 模型= Usuario 字段= [ 'nombres', '邮报']等于DocumentForm – papo 2015-04-02 23:49:34