feat: ADRF async views (phase1) + native async serializers (phase2) + async cache infra

This commit is contained in:
async-upgrade
2026-09-06 14:26:17 +08:00
parent 9a6577f71e
commit 8f488fcaaa
55 changed files with 2224 additions and 1513 deletions
+8 -8
View File
@@ -1,29 +1,29 @@
from rest_framework import serializers
from adrf.serializers import ModelSerializer
from django.utils import timezone
from datetime import timedelta
from .models import BrowsingHistory
class BrowsingHistorySerializer(serializers.ModelSerializer):
class BrowsingHistorySerializer(ModelSerializer):
class Meta:
model = BrowsingHistory
fields = ['id', 'type', 'title', 'description', 'image', 'category', 'link', 'viewed_at']
read_only_fields = ['viewed_at']
class BrowsingHistoryCreateSerializer(serializers.ModelSerializer):
class BrowsingHistoryCreateSerializer(ModelSerializer):
class Meta:
model = BrowsingHistory
fields = ['type', 'title', 'description', 'image', 'category', 'link']
def create(self, validated_data):
async def acreate(self, validated_data):
user = self.context['request'].user
link = validated_data.get('link', '')
today = timezone.now().date()
existing = BrowsingHistory.objects.filter(
existing = await BrowsingHistory.objects.filter(
user=user, link=link, viewed_at__date=today
).first()
).afirst()
if existing:
existing.save()
await existing.asave()
return existing
return BrowsingHistory.objects.create(user=user, **validated_data)
return await BrowsingHistory.objects.acreate(user=user, **validated_data)