我的模特
class Worksite(models.Model):
firm = models.ForeignKey('Firm', verbose_name='Firma', related_name="worksites", on_delete=models.CASCADE)
name = models.CharField(max_length=50, unique=True, verbose_name="Şantiye Adı")
我的保存方法
def save(self, *args, **kwargs):
if not self.slug:
self.slug = self.get_unique_slug()
os.mkdir(BASE_DIR+'/file/'+slugify(str(self.firm).replace('ı','i'))+'/'+self.slug)
return super(Worksite, self).save(self, *args, **kwargs)
我的UpdateView
class WorksiteUpdateView(generic.edit.UpdateView):
template_name = 'firm/worksite_update.html'
model = Worksite
form_class = WorksiteForm
def get_success_url(self, *args, **kwargs):
return reverse('firm:worksite_list')
IntegrityError:(1062,“重复输入'1'用于键'PRIMARY'”)
如果删除了save方法,则更新过程成功。但这次无法创建文件夹。所以保存方法是必要的。但这个错误很烦人。 错误在哪里? 请帮助。
答案 0 :(得分:1)
您是否错误地调用了父方法?尝试return super(Worksite, self).save(*args, **kwargs)
(删除额外的self
参数)。
答案 1 :(得分:1)
这是因为在调用超类方法时传递self
参数 - super().save()
。它应该可以正常工作,如果你删除它:
return super(Worksite, self).save( *args, **kwargs)