feat(problemset): 用户奖章接口带出所属题单

成就页的奖章列表只有奖章本身,看不出来自哪个题单。UserBadgeSerializer
补一个 problemset 字段,查询改 select_related("badge__problemset") —— 这是
异步视图,不预加载会在异步上下文里发同步查询。
This commit is contained in:
2026-08-05 13:53:03 -06:00
parent 8f5fee1719
commit 7be5975d88
2 changed files with 9 additions and 2 deletions

View File

@@ -287,11 +287,18 @@ class UserBadgeSerializer(serializers.ModelSerializer):
"""用户奖章序列化器"""
badge = ProblemSetBadgeSerializer()
# 成就页只拿到奖章本身,看不出是哪个题单发的,这里把题单带出来。
# 只在这个序列化器上加:题单详情页里的奖章列表本来就在题单上下文中,不需要
problemset = serializers.SerializerMethodField()
class Meta:
model = UserBadge
fields = "__all__"
def get_problemset(self, obj):
problemset = obj.badge.problemset
return {"id": problemset.id, "title": problemset.title}
class JoinProblemSetSerializer(serializers.Serializer):
"""加入题单序列化器"""