save () получил несколько значений для ключевого аргумента max_length - PullRequest
0 голосов
/ 05 июня 2018

Я использую метод сохранения 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 голосов
/ 05 июня 2018

Вам не нужно явно передавать self, super() сделает это за вас, попробуйте это:

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

вместо

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

Также первый аргумент переопределенияsave() должно быть self также:

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

UPD

Для python2 вы должны передать self и class в качестве аргументов супер:

return super(UseExistingStorage, self).save(name, content, max_length)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...