最初のオープニング: postgresql JSONFields を利用しています。
モデルに次のattribute
(フィールド) があります。User
class User(AbstractUser):
...
benefits = JSONField(default=dict())
...
私は基本的に現在、DRF を使用してフロントエンドで各ユーザーの特典をシリアル化しています。
benefits = UserBenefit.objects.filter(user=self)
serializer = UserBenefitSerializer(benefits, many=True)
UserBenefit.objects.filter(user=user)
根底にある返される利点はほとんど変化せず、ゆっくりと変化するため、 QuerySetのパフォーマンスを改善するために、変更があるたびに JSON をデータベースに「キャッシュ」することを考えました。代わりに、user.benefits
10 万人以上のユーザーを超える DB 負荷になり、できれば軽減します。
第 1 問:
これを行う必要がありますか?
第 2 四半期:
serializer.data
<class 'rest_framework.utils.serializer_helpers.ReturnList'>
JSONフィールドに対応するものを効率的に書く方法はありますか?
私は現在使用しています:
data = serializers.serialize("json", UserBenefit.objects.filter(user=self))