相关疑难解决方法(0)

Django admin:覆盖删除方法

我有admin.py如下:

  class profilesAdmin(admin.ModelAdmin):
     list_display = ["type","username","domain_name"]
Run Code Online (Sandbox Code Playgroud)

现在我想在删除对象之前执行一些操作:

  class profilesAdmin(admin.ModelAdmin):
     list_display = ["type","username","domain_name"]

     @receiver(pre_delete, sender=profile)
     def _profile_delete(sender, instance, **kwargs):
        filename=object.profile_name+".xml"
        os.remove(os.path.join(object.type,filename))
Run Code Online (Sandbox Code Playgroud)

如果我使用像这样的删除信号方法我得到一个错误说self应该是第一个参数.

如何修改上述功能?
我想检索被删除对象的profile_name.如何才能做到这一点?

我也尝试重写delete_model方法:

def delete_model(self, request, object):
    filename=object.profile_name+".xml"
    os.remove(os.path.join(object.type,filename))
    object.delete()
Run Code Online (Sandbox Code Playgroud)

但如果必须一次删除多个对象,这不起作用.

django django-admin

17
推荐指数
3
解决办法
2万
查看次数

Django中默认的"删除已选中"管理操作

如何在Django管理面板中删除或更改默认管理操作"删除所选X项"的详细名称?

django django-admin

16
推荐指数
5
解决办法
2万
查看次数

防止在Django模型中删除

我有这样的设置(简化为这个问题):

class Employee(models.Model):
    name = models.CharField(name, unique=True)

class Project(models.Model):
    name = models.CharField(name, unique=True)
    employees = models.ManyToManyField(Employee)
Run Code Online (Sandbox Code Playgroud)

当员工即将被删除时,我想检查他是否已连接到任何项目.如果是这样,删除应该是不可能的.

我知道信号以及如何使用它们.我可以连接到pre_delete信号,并使它像一个例外ValidationError.这可以防止删除但是表单等不能正常处理.

这似乎是其他人会遇到的情况.我希望有人可以指出一个更优雅的解决方案.

python django django-signals django-models

14
推荐指数
4
解决办法
1万
查看次数