我有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管理面板中删除或更改默认管理操作"删除所选X项"的详细名称?
我有这样的设置(简化为这个问题):
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.这可以防止删除但是表单等不能正常处理.
这似乎是其他人会遇到的情况.我希望有人可以指出一个更优雅的解决方案.