| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647 |
- from django.db import models
- from folder.models import Folder
- from account.models import User
- from group.models import Group
- # 引入内置信号
- from django.db.models.signals import post_delete
- # 引入信号接收器的装饰器
- from django.dispatch import receiver
- import os
- BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
- # 文件表
- class File(models.Model):
- # 文件id
- file_id = models.AutoField(primary_key=True)
- # 文件名
- file_name = models.CharField(max_length=50, blank=False)
- # 从属的文件夹
- father_folder = models.ForeignKey(Folder, on_delete=models.CASCADE, related_name='children_files')
- # 上传时间
- update_time = models.DateTimeField()
- # 文件类型
- file_type = models.CharField(max_length=32)
- # 文件大小
- file_size = models.CharField(max_length=16)
- key = models.CharField(max_length=1024)
- owner = models.ForeignKey(User, on_delete=models.DO_NOTHING, related_name='files')
- group = models.ForeignKey(Group, on_delete=models.DO_NOTHING, related_name='files', null=True)
- def to_json(self):
- return {'file_id': self.file_id,
- 'file_name': self.file_name,
- 'father_folder_id': self.father_folder_id,
- 'update_time': self.update_time,
- 'file_type': self.file_type,
- 'file_size': self.file_size}
- # 信号接收函数,每当删除file时自动删除文件
- @receiver(post_delete, sender=File)
- def delete_file(sender, instance, **kwargs):
- os.remove(BASE_DIR + '/' + str(instance.file_id))
|