首页 > 解决方案 > 删除用户时如何删除与用户关联的所有文件

问题描述

我正在尝试在 Django 中创建一个 Web 应用程序。在这里我在用户模型中创建了不同的字段,包括个人资料图片和其他图片。当我删除用户时,与用户关联的文件不会被删除。我想删除删除用户时的文件,个人资料图片和其他图片。

我正在使用 django2.2,并且我自定义了自己的用户模型和管理面板。在我的用户模型中,我添加了“个人资料图片”字段和“简历”字段。当我在我的模型中添加一个用户时,个人资料图片存储在'Media/"%username/"'目录中。我想在删除用户时删除与用户关联的文件。所以我写了'on_delete=.. ' 在用户名的()中,但它给出了一个错误。那么有什么可能的方法吗?

import ..
import os
def user_directory_path(instance, filename):
   return os.path.join('media', instance.username, filename)
class User(AbstractBaseUser):
    username = models.CharField(max_length=200, unique=True, on_delete = 
                                         os.remove(str(user_directory_path)))
    profile_photo = models.ImageField(default='media/download(1).png', 
                                       upload_to = user_directory_path)
    cv = models.FileField(upload_to = user_directory_path)
    active = models.BooleanField(default=True)
    staff = models.BooleanField(default=False)
    admin = models.BooleanField(default=False)
    moderator = models.BooleanField(default=False)
    date_joined = models.DateTimeField(_('date joined'), default=timezone.now)



我想以这种方式删除文件

username = models.CharField(max_length=200, unique=True, on_delete = 
                                         os.remove(str(user_directory_path)))

我也试过这个

username = models.CharField(max_length=200, unique=True, pre_delete=os.rmdir(user_directory_path))

但是这些错误来了 TypeError: rmdir: path should be string, bytes or os.PathLike, not function

标签: pythondjangopython-3.xdjango-modelsdjango-forms

解决方案


推荐阅读