Django 1.6:清除一个表中的数据

时间:2014-06-26 12:40:21

标签: python database django models

我有一个表名UGC,想要清除该表中的所有数据。我不想重置整个应用程序,这将删除所有其他模型中的所有数据。是否有可能只清除一个模型?如果有帮助的话,我也可以使用我的应用配置南方。

3 个答案:

答案 0 :(得分:5)

你可以use raw SQL

 cursor.execute(“DROP TABLE UGC”)

或者您可以直接在Django shell中使用ORM:

UGCModel.objects.all().delete()

那会擦除数据(不过表格),所以你必须小心:)

另一种方式(为了完整性和使用南方)将在模型声明中注释掉模型,迁移然后再将其重新放回(假设没有模型引用它。)

HTH

答案 1 :(得分:2)

在管理界面中,您可以转到该模型的列表页面,然后您可以选择所有模型并使用表格顶部的Delete selected ...操作。

请记住,无论以何种方式删除数据,外键默认为ON DELETE CASCADE,因此任何具有要删除的模型的外键的模型也将被删除。管理界面将为您提供将要删除的模型的完整概述。

答案 2 :(得分:0)

今天用django 2.0.2面对这样的问题,因为我用

创建了我的模型
class Front(models.Model):
    pass

并迁移了它,但是当我后来更新模型时,我无法运行 python manage.py makemigrations,因为它是在说

You are trying to add a non-nullable field 'update' to front without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
 1) Provide a one-off default now (will be set on all existing rows 
with a null value for this column)
 2) Quit, and let me add a default in models.py
Select an option:

我的解决方案是什么?

  1. 我选择退出
  2. 的选项2
  3. 我评论了麻烦的模型/表格,在我的案例中是Front
  4. 我跑了python manage.py makemigrations删除了麻烦的桌子/模型
  5. 我取消了我的模型并再次运行python manage.py makemigrations,重新创建了表/模型,最后
  6. 我使用python manage.py migrate迁移了我的更改,并且解决了所有问题!
  7. 注意:请注意上述说明,因为它会删除表格/型号的所有引用/外键on_delete=models.CASCADE这是默认值!