我有这个函数在Django Admin中删除行时删除给定的目录。在Django Admin上完成后,该行已成功删除,但该目录仍然存在。
models.py
from django.db import models
from django.conf import settings
import git, os, shutil
class DIR (models.Model):
username = models.CharField(max_length=39)
repository = models.CharField(max_length=100)
def get_dir_name(self):
return os.path.join(settings.PLAYBOOK_DIR, self.repository)
def rm_repository(self):
DIR_NAME = self.get_dir_name()
shutil.rmtree(os.path.join(DIR_NAME))
def delete(self):
self.rm_repository(self):
super(DIR, self).delete(*args, **kwargs)
但是当我尝试使用shell时,目录和内容会被删除
$ docker exec -it <container> python manage.py shell
>>> import os, git, shutil
>>> DIR_NAME = '/opt/app/john'
>>> shutil.rmtree(DIR_NAME)
shell之间有什么区别。没有给出错误,只是不确定为什么在Django Admin的delete
中执行此操作不起作用。虽然它在python shell上测试时有效吗?
答案 0 :(得分:0)
显然函数delete()不适用于批量删除。 我在Django Admin中做了什么。