From a049ca7f2b508c23d4a055e6653d971327b2950e Mon Sep 17 00:00:00 2001 From: yuetsh <517252939@qq.com> Date: Mon, 30 Mar 2026 18:50:54 -0600 Subject: [PATCH] add log --- submission/api.py | 6 +++++- submission/migrations/0009_add_view_count.py | 18 ++++++++++++++++++ submission/models.py | 1 + 3 files changed, 24 insertions(+), 1 deletion(-) create mode 100644 submission/migrations/0009_add_view_count.py diff --git a/submission/api.py b/submission/api.py index 7745aee..a5979cc 100644 --- a/submission/api.py +++ b/submission/api.py @@ -6,7 +6,7 @@ from ninja.errors import HttpError from ninja.pagination import paginate from django.shortcuts import get_object_or_404 from django.contrib.auth.decorators import login_required -from django.db.models import Avg, Count, IntegerField, Max, OuterRef, Q, Subquery +from django.db.models import Avg, Count, F, IntegerField, Max, OuterRef, Q, Subquery from .schemas import ( @@ -326,6 +326,10 @@ def get_submission(request, submission_id: UUID): ), id=submission_id, ) + Submission.objects.filter(pk=submission.pk).update( + view_count=F("view_count") + 1 + ) + submission.view_count += 1 # 更新内存中的值,避免再次查询 return submission diff --git a/submission/migrations/0009_add_view_count.py b/submission/migrations/0009_add_view_count.py new file mode 100644 index 0000000..d72faa7 --- /dev/null +++ b/submission/migrations/0009_add_view_count.py @@ -0,0 +1,18 @@ +# Generated by Django 6.0.1 on 2026-03-31 00:42 + +from django.db import migrations, models + + +class Migration(migrations.Migration): + + dependencies = [ + ('submission', '0008_add_zone'), + ] + + operations = [ + migrations.AddField( + model_name='submission', + name='view_count', + field=models.PositiveIntegerField(default=0, verbose_name='查看次数'), + ), + ] diff --git a/submission/models.py b/submission/models.py index d2875c3..72041f5 100644 --- a/submission/models.py +++ b/submission/models.py @@ -64,6 +64,7 @@ class Submission(TimeStampedModel): db_index=True, verbose_name="分区", ) + view_count = models.PositiveIntegerField(default=0, verbose_name="查看次数") class Meta: ordering = ("-created",)