Some optimizations to trade_offers to reduce loading times
This commit is contained in:
parent
0ac8ac8d5c
commit
9ce5d525b3
13 changed files with 255 additions and 222 deletions
|
|
@ -1,11 +1,39 @@
|
|||
from django.db import models
|
||||
from django.core.exceptions import ValidationError
|
||||
from django.db.models import Q
|
||||
from django.db.models import Q, Count, Prefetch, F, Sum
|
||||
import hashlib
|
||||
from cards.models import Card
|
||||
from accounts.models import FriendCode
|
||||
class TradeOfferManager(models.Manager):
|
||||
|
||||
def get_queryset(self):
|
||||
queryset = super().get_queryset().select_related("initiated_by", "initiated_by__user")
|
||||
queryset = queryset.prefetch_related(
|
||||
Prefetch(
|
||||
"trade_offer_want_cards",
|
||||
queryset=TradeOfferWantCard.objects.select_related("card").annotate(
|
||||
total_quantity=Sum("quantity"),
|
||||
total_accepted=Sum("qty_accepted")
|
||||
).order_by("total_quantity", "id")
|
||||
),
|
||||
Prefetch(
|
||||
"trade_offer_have_cards",
|
||||
queryset=TradeOfferHaveCard.objects.select_related("card").annotate(
|
||||
total_quantity=Sum("quantity"),
|
||||
total_accepted=Sum("qty_accepted")
|
||||
).order_by("total_quantity", "id")
|
||||
),
|
||||
Prefetch(
|
||||
"acceptances",
|
||||
queryset=TradeAcceptance.objects.select_related("accepted_by", "accepted_by__user", "requested_card", "offered_card")
|
||||
),
|
||||
).order_by("-updated_at")
|
||||
return queryset
|
||||
|
||||
|
||||
class TradeOffer(models.Model):
|
||||
objects = TradeOfferManager()
|
||||
|
||||
id = models.AutoField(primary_key=True)
|
||||
is_closed = models.BooleanField(default=False, db_index=True)
|
||||
hash = models.CharField(max_length=9, editable=False)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue