python - Django Model Instance - Saving other attributes -
i'm trying support user uploads in django application. application should allow user create own repo of files , folders.
the below model instance
class project(models.model): name = models.charfield(max_length=255) def __str__(self): return self.name class folders(models.model): name = models.charfield(max_length = 255,default = 'main') project = models.foreignkey(case) class files(models.model): folder = models.foreignkey(folders) file = models.filefield(upload_to = get_upload_url) def get_upload_url(instance,filename): print('instance :',instance) return '/'.join([instance.folder.project.name,instance.folder.name,filename])
i'm getting error when i'm trying upload docs specific folders using django forms
def projectpagealt(request,casenum,folder): proj = project.objects.get(pk=casenum) folder = folders.objects.get(name = folder,project=proj) files = files.objects.filter(folder=folder) or none if request.method == 'post': form = fileuploadform(request.post,request.files) if form.is_valid(): instance = form instance[folder] = folder # form.folder = folder instance.save() return httpresponse('thanks') else: form = fileuploadform() return render(request,'projectuploadalternative.html',{'form':form,'files':files})
i'm getting below error because i'm trying add folder instance model before saving
'fileuploadform' object not support item assignment
is there anyway around this? need ensure file gets uploaded appropriate folder
found work around. sounds more hack me.
def casepagealt(request,casenum,folder): case = case.objects.get(pk=casenum) folder = folders.objects.get(name = folder,case=case) files = files.objects.filter(folder=folder) or none if request.method == 'post': form = fileuploadform(request.post,request.files) if form.is_valid(): file = request.files['upload'] instance = files(folder=folder,file=file) instance.save() return httpresponse('thanks') else: form = fileuploadform() return render(request,'caseuploadalternative.html',{'form':form,'files':files})
this works because initial form had modelform. made form normal one
previous
# class fileuploadform(forms.modelform): # # class meta: # model = files # fields = ['file']
new
class fileuploadform(forms.form): upload = forms.filefield()
Comments
Post a Comment