+ User.invited_with_orders_count field
This commit is contained in:
parent
dab4fbd0a4
commit
0eaa1c1b86
|
|
@ -7,7 +7,7 @@ from django.contrib.auth.models import UserManager as _UserManager, AbstractUser
|
|||
from django.core.exceptions import ValidationError
|
||||
|
||||
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 phonenumber_field.modelfields import PhoneNumberField
|
||||
from phonenumber_field.phonenumber import PhoneNumber
|
||||
|
|
@ -173,6 +173,12 @@ class User(BonusProgramMixin, AbstractUser):
|
|||
def invited_users(self):
|
||||
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
|
||||
def inviter(self):
|
||||
return User.objects.filter(user_invited__invited=self.id).first()
|
||||
|
|
|
|||
|
|
@ -13,10 +13,15 @@ class UserSerializer(serializers.ModelSerializer):
|
|||
name = serializers.CharField(source='first_name')
|
||||
lastname = serializers.CharField(source='middle_name')
|
||||
surname = serializers.CharField(source='last_name')
|
||||
invited_with_orders_count = serializers.SerializerMethodField()
|
||||
|
||||
class Meta:
|
||||
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):
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user