Jelajahi Sumber

定时删除未使用的数据

john 2 tahun lalu
induk
melakukan
3a6f1d7e2c

+ 23 - 0
admin_site/files/migrations/0004_alter_files_order_id_alter_files_user_id.py

@@ -0,0 +1,23 @@
+# Generated by Django 4.1.7 on 2023-04-09 07:21
+
+from django.db import migrations, models
+
+
+class Migration(migrations.Migration):
+
+    dependencies = [
+        ('files', '0003_files_order_id'),
+    ]
+
+    operations = [
+        migrations.AlterField(
+            model_name='files',
+            name='order_id',
+            field=models.CharField(blank=True, max_length=100, null=True),
+        ),
+        migrations.AlterField(
+            model_name='files',
+            name='user_id',
+            field=models.CharField(blank=True, max_length=100, null=True),
+        ),
+    ]

+ 2 - 2
admin_site/files/models.py

@@ -8,8 +8,8 @@ from django.db import models
 # 人员信息表
 class Files(models.Model):
     id = models.BigAutoField(primary_key=True)  #文件id
-    user_id = models.CharField(max_length=100,null=True) # 用户ID
-    order_id = models.CharField(max_length=100,null=True) # 订单ID
+    user_id = models.CharField(max_length=100,null=True,blank=True) # 用户ID
+    order_id = models.CharField(max_length=100,null=True,blank=True) # 订单ID
     file_path = models.FileField(upload_to='download/') # 文件存放地址
     create_time = models.DateTimeField(auto_now_add=True)  # 创建时间
     update_time = models.DateTimeField(auto_now=True)  # 更新时间

+ 2 - 2
admin_site/files/tasks.py

@@ -16,11 +16,11 @@ def del_file():
     # 比当前时间早4小时的时间
     three_hours_ago = now_aware - timedelta(hours=4)
     # 找到不存在订单id,并且上传时间比当前时间早4小时的文件数据,将其删除
-    files_to_delete = Files_models.objects.filter(order_id__isnull=True, create_time__lt=three_hours_ago)
+    files_to_delete = Files_models.objects.filter(order_id__isnull=True, user_id__isnull=True, create_time__lt=three_hours_ago)
     # 创建一个循环语句
     for file in files_to_delete:
         # 获取文件的绝对路径
-        file_path = os.getcwd() + file.file_path
+        file_path = os.getcwd() + '/' + file.file_path.url
         try:
             # 删除文件
             os.remove(file_path)

TEMPAT SAMPAH
admin_site/mysite