Моя модель
Предположим, я создал пользователя с именем "Ашу", а этот пользователь "Ашу" создал несколько сеансов, теперь я хочу напечатать количество экземпляров сеанса пользователем "Ашу".
class MyUser(AbstractBaseUser):
email = models.EmailField(
verbose_name='email address',
max_length=255,
unique=True)
user_name=models.CharField(max_length=10,blank=True,null=True,unique=True)
date_of_birth=models.DateField(null=True,blank=True)
mobile_number=models.CharField(max_length=20,blank=True,null=True)
address=models.CharField(max_length=100,blank=True,null=True)
country=models.CharField(max_length=20,blank=True,null=True)
joining_date=models.DateField(null=True,blank=True)
Rating_CHOICES = (
(1, 'Poor'),
(2, 'Average'),
(3, 'Good'),
(4, 'Very Good'),
(5, 'Excellent')
)
Rating=models.IntegerField(choices=Rating_CHOICES,default=1)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
objects = MyUserManager()
USERNAME_FIELD = 'email'
REQUIRED_FIELDS = ['date_of_birth']
def __str__(self):
return str(self.user_name)
def has_perm(self, perm, obj=None):
return True
def has_module_perms(self, app_label):
return True
@property
def is_staff(self):
return self.is_admin
class Session(models.Model):
Host=models.ForeignKey(MyUser,on_delete=models.CASCADE)
game=(
('cricket','cricket'),
('football','football'),
('basketball','basketball'),
('hockey','hockey'),
('gym','gym'),
('baseball','baseball'),
)
Sport=models.CharField(max_length=20,choices=game)
SPORT=(
('Indoor','Indoor'),
('Outdoor','Outdoor'),
)
Sports_category=models.CharField(max_length=10,choices=SPORT)
SESSIONS=(
('General','General'),
('Business','Business'),
)
Session_category=models.CharField(max_length=15,choices=SESSIONS)
TYPE=(
('Paid','Paid'),
('Free','Free'),
)
Session_type=models.CharField(max_length=10,choices=TYPE)
Created=models.DateField(null=True,blank=True)
Session_Date=models.DateField(null=True,blank=True)
Location=models.ForeignKey(MyUser,related_name='street',on_delete=models.CASCADE)
Player=models.CharField(max_length=100,blank=False)
Start_time=models.TimeField(auto_now=False, auto_now_add=False)
End_time=models.TimeField(auto_now=False, auto_now_add=False)
Duration=models.CharField(max_length=30,blank=False)
status=(
('1','Active'),
('2','UnActive'),
)
Status=models.CharField(max_length=20,choices=status)
Equipment=models.TextField()
Duration=models.CharField(max_length=20,blank=False)
Level=models.ForeignKey(IntrestedIn,blank=True,on_delete=models.CASCADE)
GENDER=(
('Male','Male'),
('Female','Female'),
('Male and Female','Male and Female'),
('Other','Other'),
)
Gender=models.CharField(max_length=20,choices=GENDER ,blank=True)
Fee=models.CharField(max_length=50,blank=True,default='0')
def __str__(self):
return str(self.Host)
МОЙ ПРОСМОТР
class UserViewSet(viewsets.ViewSet):
def create(self,request):
try:
user_name=request.data.get('user_name')
mobile_number=request.data.get('mobile_number')
address=request.data.get('address')
country=request.data.get('country')
joining_date=request.data.get('joining_date')
if not all([user_name,mobile_number,address,country,joining_date]):
raise Exception('All fields are mandatory')
user=MyUser()
user.user_name=user_name
user.mobile_number=mobile_number
user.address=address
user.country=country
user.joining_date=joining_date
user.save()
return Response({"response":'delivered'})
except Exception as error:
traceback.print_exc()
return Response({"message": str(error), "success": False}, status=status.HTTP_200_OK)
class SessionViewSet(viewsets.ViewSet):
def create(self, request):
try:
Host= request.data.get('Host')
Sport = request.data.get('Sport')
Sports_category = request.data.get('sports_category')
#Location = request.data.get('Location')
Session_category = data.get('session_category')
Session_type=data.get('session_type ')
Created=data.get('Created')
Session_Date=data.get('Session_Date')
Location=request.data.get('Location')
Start_time=request.data.get('Start_time')
End_time=request.data.get('End_time')
Duration=request.data.get('Duration')
Level=request.data.get('Level')
Player=request.data.get('Player')
Gender=request.data.get('Gender')
Fee=request.data.get('Fee')
Equipment=request.data.get('Equipment')
new=Session()
new.Host=MyUser.objects.get(user_name=Host)
new.Sport=Sport
new.Sports_category=sports_category
new.Session_category=session_category
new.Session_type=session_type
new.Created=Created
new.Session_Date=Session_Date
new.Location=MyUser.objects.get(address=Location)
new.Start_time=Start_time
new.End_time=End_time
new.Duration=Duration
new.Level=IntrestedIn.objects.get(Level=Level)
new.Player=Player
new.Equipment=Equipment
new.save()
return Response({'Submitted Successfully':True})
except Exception as error:
return Response({"message": str(error), "success": False},
status=status.HTTP_200_OK)
def list(self, request):
try:
search = request.GET.get('search')
sport=request.GET.get('sport')
if search:
users = Session.objects.filter(Host__user_name=search)
page = request.GET.get('page')
paginator = Paginator(users,1)
try:
user = paginator.page(page)
except PageNotAnInteger:
user = paginator.page(1)
except EmptyPage:
user = paginator.page(paginator.num_pages)
use = []
for user in users:
use.append({
'Host':user.Host.user_name,
'Sport':user.Sport,
'Sports_category':user.Sports_category,
'Session_category':user.Session_category,
'Session_type':user.Session_type,
'Created':user.Created,
'Session_Date':user.Session_Date
})
return Response({'output':use})
if sport:
users = Session.objects.filter(Sport=sport)
page = request.GET.get('page')
paginator = Paginator(users,1)
try:
user = paginator.page(page)
except PageNotAnInteger:
user = paginator.page(1)
except EmptyPage:
user = paginator.page(paginator.num_pages)
use = []
for user in users:
use.append({
'Host':user.Host.user_name,
'Sport':user.Sport,
#'Sports_category':user.Sports_category,
#'Session_category':user.Session_category,
#'Session_type':user.Session_type,
#'Created':user.Created,
#'Session_Date':user.Session_Date
})
return Response({'out':use})
else :
users = Session.objects.all()
page = request.GET.get('page')
paginator = Paginator(users,1)
try:
user = paginator.page(page)
except PageNotAnInteger:
user = paginator.page(1)
except EmptyPage:
user = paginator.page(paginator.num_pages)
use = []
for user in users:
use.append({
'Host':user.Host.user_name,
'Sport':user.Sport,
'Sports_category':user.Sports_category,
'Session_category':user.Session_category,
'Session_type':user.Session_type,
'Created':user.Created,
'Session_Date':user.Session_Date
})
return Response({"success":True, "users":use, "pages":paginator.num_pages})
except Exception as error:
traceback.print_exc()
return Response({"message": str(error), "success": False}, status=status.HTTP_200_OK)