【问题标题】:Django: automatically delete recordsDjango:自动删除记录
【发布时间】:2015-11-20 17:13:21
【问题描述】:

我正在尝试实时或自动删除记录,类似于this

据我了解(我是新手)您需要编写一个管理命令,但我很难掌握这个概念,它怎么可能是实时的?有人可以指出我正确的方向吗?我很困扰。提前谢谢你。

【问题讨论】:

  • 您能详细说明一下吗?删除记录不需要管理命令
  • 我已经编辑了我的问题

标签: django python-2.7 django-commands


【解决方案1】:

您想了解的有关自定义 Django 命令的所有信息都可以在以下文档中找到:https://docs.djangoproject.com/en/1.8/howto/custom-management-commands/

基本上,您需要创建一个management/commands 目录,因此您的文件夹结构如下所示:

app/
    ... (some stuff you're having in your app directory)
    management/
        __init__.py
        commands/
            __init__.py
            delete_all.py

现在在delete_all.py 中,您要声明一个扩展BaseCommand 的新命令类并负责您的所有逻辑。最简单的实现如下所示:

# delete_all.py
from django.core.management.base import BaseCommand
from app.models import MyModel


class Command(BaseCommand):
    def handle(self, *args, **options):
        print('Deleting all MyModel records!')
        MyModel.objects.all().delete()
        print('Successfully deleted all MyModel records!')

现在您可以使用manage.py 访问您的命令:

python manage.py delete_all

【讨论】:

  • 我明白了,如果我需要删除一些过期的记录,我需要运行 manage.py 吗?感谢您的回复。
  • 该目录应该是app/management/commands,并且在管理和命令目录中带有__init__.py
  • @Chris Montanaro 谢谢,你是对的!我根据您的建议编辑了我的答案
  • @Juan Carlos Asuncion 是的,如果你需要你的命令在每个固定的时间间隔运行,你需要设置一个 cron 作业来为你执行命令
  • 谢谢,会尝试一下
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-11-20
  • 1970-01-01
  • 1970-01-01
  • 2019-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多