2015-04-02 30 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