+ User.invited_with_orders_count field
This commit is contained in:
parent
7fe327acd2
commit
466b45539d
|
|
@ -7,7 +7,7 @@ from django.contrib.auth.models import UserManager as _UserManager, AbstractUser
|
||||||
from django.core.exceptions import ValidationError
|
from django.core.exceptions import ValidationError
|
||||||
|
|
||||||
from django.db import models
|
from django.db import models
|
||||||
from django.db.models import Q
|
from django.db.models import Q, Count
|
||||||
from django.utils.translation import gettext_lazy as _
|
from django.utils.translation import gettext_lazy as _
|
||||||
from phonenumber_field.modelfields import PhoneNumberField
|
from phonenumber_field.modelfields import PhoneNumberField
|
||||||
from phonenumber_field.phonenumber import PhoneNumber
|
from phonenumber_field.phonenumber import PhoneNumber
|
||||||
|
|
@ -173,6 +173,12 @@ class User(BonusProgramMixin, AbstractUser):
|
||||||
def invited_users(self):
|
def invited_users(self):
|
||||||
return User.objects.filter(user_inviter__inviter=self.id)
|
return User.objects.filter(user_inviter__inviter=self.id)
|
||||||
|
|
||||||
|
@property
|
||||||
|
def invited_users_with_orders(self):
|
||||||
|
return (self.invited_users
|
||||||
|
.annotate(_orders_count=Count('customer_orders'))
|
||||||
|
.filter(_orders_count__gt=0))
|
||||||
|
|
||||||
@property
|
@property
|
||||||
def inviter(self):
|
def inviter(self):
|
||||||
return User.objects.filter(user_invited__invited=self.id).first()
|
return User.objects.filter(user_invited__invited=self.id).first()
|
||||||
|
|
|
||||||
|
|
@ -13,10 +13,15 @@ class UserSerializer(serializers.ModelSerializer):
|
||||||
name = serializers.CharField(source='first_name')
|
name = serializers.CharField(source='first_name')
|
||||||
lastname = serializers.CharField(source='middle_name')
|
lastname = serializers.CharField(source='middle_name')
|
||||||
surname = serializers.CharField(source='last_name')
|
surname = serializers.CharField(source='last_name')
|
||||||
|
invited_with_orders_count = serializers.SerializerMethodField()
|
||||||
|
|
||||||
class Meta:
|
class Meta:
|
||||||
model = User
|
model = User
|
||||||
fields = ('id', 'email', 'phone', 'role', 'name', 'lastname', 'surname', 'balance', 'referral_code', 'is_draft_user')
|
fields = ('id', 'email', 'phone', 'role', 'name', 'lastname', 'surname',
|
||||||
|
'balance', 'referral_code', 'is_draft_user', 'invited_with_orders_count')
|
||||||
|
|
||||||
|
def get_invited_with_orders_count(self, obj):
|
||||||
|
return obj.invited_users_with_orders.count()
|
||||||
|
|
||||||
|
|
||||||
class BonusProgramTransactionSerializer(serializers.ModelSerializer):
|
class BonusProgramTransactionSerializer(serializers.ModelSerializer):
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user