save()获得了关键字参数" max_length'的多个值。

时间:2018-06-05 14:48:55

标签: django file-upload

我使用django的保存方法,我的错误为save() got multiple values for keyword argument 'max_length'

这是我的模特:

def generate_path(instance, filename):
     section=instance.document_title.historical_set.last().id_section
     year=str(section.year.number)
     course=(section.course.name)
     section=str(section.number)
     curso=curso.encode('utf-8').decode('utf-8')
     return os.path.join(ciclo,curso,seccion,filename)


class UseExistingStorage(FileSystemStorage):

   def save(name, content, max_length=None):
       if not self.exists(name):
           return super().save(self,name, content, max_length)
       return name

class Field(models.Model):
     type=models.CharField(max_length=50, choices=document_type, default=None)
     document_title=models.ForeignKey(Document,on_delete=models.CASCADE,null=True)
     file = models.FileField(null=True,blank=True,     upload_to=generate_path,storage=UseExistingStorage())
     rubric=models.FileField(null=True,blank=True,upload_to=generate_path,storage=UseExistingStorage())

这就是我保存字段的方式:

if FieldForm.is_valid():
  course=request.POST.get('course')
  coursename=Course.objects.values('name').get(name=course)

  try:
       field.file=request.FILES['file']

  except:
        pass
  try:
       field.rubric=request.FILES['rubric']

  except:
       pass
  if type.find('a')!=-1:
       field.type='a'
  elif coursename.find('b')!=-1 :
       field.type='b'
  elif type.find('c')!=-1:
       field.type='c'
  else:
       field.type='d'

  field.document_title=documentTitle
  field.save()

在生成路径中,我会在年份/课程/部分中保存文档,并在存储检查中确定该字段是否存在于该位置。但我不知道为什么我会这样做错误

1 个答案:

答案 0 :(得分:3)

您无需明确传递proc fac {x} { if {$x<2} { return 1 } else { return [expr {$x * [fac [incr x -1]]}] } } self会为您完成此操作,请尝试以下操作:

super()

而不是

return super().save(name, content, max_length)

覆盖return super().save(self,name, content, max_length) 的第一个论点也应该是save()

self

<强> UPD

对于python2,您应该将def save(self, name, content, max_length=None): if not self.exists(name): return super().save(name, content, max_length) return name self作为超级参数传递:

class