2012-01-12 45 views
0

是否有一种方法可以禁用数据库中的项目而不是将其删除。禁用数据库中的项目而不是删除它

任何一个有任何想法,不要回复

+0

定义“item”。一些对象可以被禁用。触发器,例如。但是我从你的评论中进一步看到,你指的是值/表格行。所以不,没有标准的方法来“禁用”那些。 – 2012-01-12 10:30:39

回答

1

我想这取决于你的意思是“禁用”是什么。你可以添加一个名为例如BooleanFielddisabled,然后筛选查询(通过custom manager可能是最好做)这样反而

Mymodel.objects.all() 

Mymodel.objects.filter(disabled=False).all() 
+0

事情是我想删除数据库中的一个项目。但我与其他一些项目有外键关系,所以我想如果有办法让这个项目不活动。 – 2012-01-12 10:03:36

+0

如果我添加一个布尔型字段到当前模型,我可以看到更改的唯一方法是当我syncdb,并且这样做是删除表右? – 2012-01-12 10:04:45

+0

https://docs.djangoproject.com/en/dev/ref/models/fields/#django.db.models.ForeignKey.on_delete可能值得一看 – second 2012-01-12 10:05:13

0

您可以设置在表中的字段,你设置如果行是否有效如果该行已停用,则取消设置。

1

不在SQL中。什么,你可能会结束了做要解决的问题是要么

  • 移动“已禁用”值到另一个表,或者通过触发器或存储过程

  • 在默认值为1的表格中添加一个'active'标志并将其设置为0而不是删除。这将需要对每个不想查询禁用记录的查询(并且活动= 1)有额外的条件。
相关问题