debug4
All checks were successful
Deploy to Server / deploy (push) Successful in 21s

This commit is contained in:
jeremygan2021
2026-03-23 00:15:21 +08:00
parent ed6905a22e
commit f1f1e0df5a
3 changed files with 36 additions and 1 deletions

View File

@@ -0,0 +1,18 @@
# Generated by Django 6.0.1 on 2026-03-22 16:15
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('competition', '0012_alter_competition_cover_image_url_and_more'),
]
operations = [
migrations.AddField(
model_name='projectfile',
name='file_size',
field=models.BigIntegerField(blank=True, null=True, verbose_name='文件大小(字节)'),
),
]

View File

@@ -297,6 +297,7 @@ class ProjectFile(models.Model):
file = models.FileField(upload_to='competitions/projects/files/', verbose_name="文件", null=True, blank=True)
file_url = models.TextField(verbose_name="文件链接", null=True, blank=True, help_text="OSS URL或外部链接")
file_size = models.BigIntegerField(verbose_name="文件大小(字节)", null=True, blank=True)
name = models.CharField(max_length=100, verbose_name="文件名称", blank=True)

View File

@@ -39,15 +39,29 @@ class CompetitionEnrollmentSerializer(serializers.ModelSerializer):
class ProjectFileSerializer(serializers.ModelSerializer):
file_url_display = serializers.SerializerMethodField()
file_size_display = serializers.SerializerMethodField()
class Meta:
model = ProjectFile
fields = ['id', 'project', 'file_type', 'file', 'file_url', 'name', 'created_at', 'file_url_display']
fields = ['id', 'project', 'file_type', 'file', 'file_url', 'file_size', 'name', 'created_at', 'file_url_display', 'file_size_display']
def get_file_url_display(self, obj):
if obj.file:
return obj.file.url
return obj.file_url
def get_file_size_display(self, obj):
if not obj.file_size:
return None
size = obj.file_size
if size < 1024:
return f"{size} B"
elif size < 1024 * 1024:
return f"{size / 1024:.1f} KB"
elif size < 1024 * 1024 * 1024:
return f"{size / (1024 * 1024):.1f} MB"
else:
return f"{size / (1024 * 1024 * 1024):.2f} GB"
def validate_file(self, value):
if not value:
@@ -87,6 +101,8 @@ class ProjectFileSerializer(serializers.ModelSerializer):
if not validated_data.get('name'):
validated_data['name'] = file_obj.name
validated_data['file_size'] = file_obj.size
try:
from ai_services.services import AliyunTingwuService
service = AliyunTingwuService()