相关疑难解决方法(0)

如何使用django删除表中的所有数据

我有两个问题:

  1. 如何删除django中的表
  2. 如何删除表中的所有数据

这是我的代码,但没有成功:

Reporter.objects.delete()
Run Code Online (Sandbox Code Playgroud)

python django django-queryset

99
推荐指数
6
解决办法
10万
查看次数

Django删除除查询集的最后五个之外的所有内容

我这里有一个超级简单的django模型:

class Notification(models.Model):
    message = models.TextField()
    user = models.ForeignKey(User)
    timestamp = models.DateTimeField(default=datetime.datetime.now)
Run Code Online (Sandbox Code Playgroud)

使用ajax,我每分钟检查一下新消息.我只会随时向用户显示最近的五个通知.我想避免的是以下场景.

用户登录并且没有通知.当用户的窗口启动时,他会收到10条新消息.因为我只向他展示五个,没什么大不了的.当用户开始删除他的通知时会发生此问题.如果他删除了显示的五个,那么五个旧的将在下一个ajax调用或刷新时显示.

我希望我的模型的save方法除了保存新的对象外,还会删除5个最新的对象.不幸的是,你不能用[5:]来做这件事.救命?

编辑

我试过这个没有按预期工作(在模型的保存方法中):

    notes = Notification.objects.filter(user=self.user)[:4]
    Notification.objects.exclude(pk__in=notes).delete()
Run Code Online (Sandbox Code Playgroud)

我找不到奇怪行为的模式,但经过一段时间的测试后,它只会在创建新模式时删除最新的模式.我不知道为什么会这样.在模型的Meta类中处理排序(按时间戳降序).感谢您的帮助,但我的方式似乎是唯一一致的.

python django

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

Django .all() 之后的 .delete() 方法

想象一下 2 行:

Model.objects.all().delete()
Run Code Online (Sandbox Code Playgroud)

Model.objects.delete()
Run Code Online (Sandbox Code Playgroud)

执行流程有什么区别吗?数据库服务器是Mysql(Amazon RDBMS)。

第一行是不是先加载所有的对象,然后一个一个的删除呢?或者将执行“截断”命令?

而且,最重要的是- 如果第一行在执行过程中由于某些原因被中断怎么办?例如,我们有一个包含很多记录的大表。如果我们执行第一行并且脚本将被终止 - 这是否意味着某些记录将被删除,而某些记录将被删除?

谢谢你!

django django-orm

6
推荐指数
2
解决办法
5349
查看次数

标签 统计

django ×3

python ×2

django-orm ×1

django-queryset ×1