add attachments model

This commit is contained in:
Timur
2025-03-02 11:52:07 +03:00
parent c9750881d3
commit 24d9e616bc
2 changed files with 49 additions and 4 deletions
@@ -0,0 +1,40 @@
# Generated by Django 5.1.6 on 2025-03-02 08:50
import apps.task.models
import django.db.models.deletion
from django.db import migrations, models
class Migration(migrations.Migration):
dependencies = [
('task', '0001_initial'),
]
operations = [
migrations.AddField(
model_name='competitiontask',
name='attachments',
field=models.ManyToManyField(blank=True, related_name='tasks_attachments', to='task.competitiontaskattachment'),
),
migrations.AlterField(
model_name='competitiontaskattachment',
name='bind_at',
field=models.FilePathField(verbose_name='путь сохранения'),
),
migrations.AlterField(
model_name='competitiontaskattachment',
name='file',
field=models.FileField(upload_to=apps.task.models.CompetitionTaskAttachment.file_upload_at, verbose_name='файл'),
),
migrations.AlterField(
model_name='competitiontaskattachment',
name='public',
field=models.BooleanField(default=False, verbose_name='публичный'),
),
migrations.AlterField(
model_name='competitiontaskattachment',
name='task',
field=models.ForeignKey(on_delete=django.db.models.deletion.CASCADE, to='task.competitiontask', verbose_name='задание'),
),
]
+9 -4
View File
@@ -48,6 +48,9 @@ class CompetitionTask(BaseModel):
default="stdout", default="stdout",
) )
attachments = models.ManyToManyField("CompetitionTaskAttachment", blank=True,
related_name="tasks_attachments")
def __str__(self): def __str__(self):
return self.title return self.title
@@ -71,10 +74,12 @@ class CompetitionTaskAttachment(BaseModel):
def file_upload_at(instance, filename): def file_upload_at(instance, filename):
return f"/attachment/{instance.id}/file" return f"/attachment/{instance.id}/file"
task = models.ForeignKey(CompetitionTask, on_delete=models.CASCADE) task = models.ForeignKey(CompetitionTask, on_delete=models.CASCADE,
file = models.FileField(upload_to=file_upload_at) verbose_name="задание")
bind_at = models.FilePathField() file = models.FileField(upload_to=file_upload_at,
public = models.BooleanField(default=False) verbose_name="файл")
bind_at = models.FilePathField(verbose_name="путь сохранения")
public = models.BooleanField(default=False, verbose_name="публичный")
class CompetitionTaskSubmission(BaseModel): class CompetitionTaskSubmission(BaseModel):