from django.db import models
from django.db import connection
from django.urls import reverse
from biljart.models import Spelers
from handicap.models import Handicap
from django.core.validators import MaxValueValidator, MinValueValidator
from django.utils.timezone import now
# Create your models here.
VRIJ = "V"
BAND = "B"
DRIEBAND = "3B"
SPELTYPE_CHOICES = (
(VRIJ, "V"),
(BAND, "B"),
(DRIEBAND, "3B"),
)
import datetime
def current_year():
return datetime.date.today().year
class Matchen(models.Model):
idspeler1 =models.ForeignKey('biljart.Spelers', related_name='idspeler1',on_delete=models.CASCADE)
idspeler2 = models.ForeignKey('biljart.Spelers', related_name='idspeler2',on_delete=models.CASCADE)
datum = models.DateField(default='2023-01-01')
speltype = models.CharField(max_length=2,choices=SPELTYPE_CHOICES,default='VRIJ')
gespeeld1 = models.PositiveIntegerField(default=0)
gespeeld2 = models.PositiveIntegerField(default=0)
beurten = models.IntegerField(default=0,validators = [MaxValueValidator(25)])
handicap_nbr = models.CharField(max_length=8,default='2023-1')
def __unison__(self):
pass
#return f"{self.idspeler1}"
def get_absolute_url(self):
"""Returns the URL to list."""
print('idspeler1',str(self.idspeler1),'----',self.idspeler1_id)
return reverse('indmatchen',args=[str(self.idspeler1_id)])
def get_absolute_url2(self):
"""Returns the URL to list."""
return reverse('indmatchen',args=[str(self.idspeler2_id)])
@property
def tespelen1(self):
speltype = self.speltype
match self.speltype:
case "V": speltype = 'vrij'
case 'B': speltype = 'band'
case '3B': speltype='drieband'
tespelen1=Handicap.objects.values_list(speltype,flat=True).filter(idspeler=self.idspeler1_id)
return(tespelen1[0])
@property
def tespelen2(self):
speltype = self.speltype
match self.speltype:
case "V": speltype = 'vrij'
case 'B': speltype = 'band'
case '3B': speltype='drieband'
tespelen2=Handicap.objects.values_list(speltype,flat=True).filter(idspeler=self.idspeler2_id)
return(tespelen2[0])
@property
def punten1(self):
extra=(25-self.beurten)/10
if self.gespeeld1 == self.tespelen1:
win1=1
punten1=10+1+extra
else:
punten1=(self.gespeeld1/self.tespelen1)*10
return (round(punten1,2))
@property
def punten2(self):
extra=(25-self.beurten)/10
if self.gespeeld2 == self.tespelen2:
win1=2
punten2=10+1+extra
else:
punten2=(self.gespeeld2/self.tespelen2)*10
return (round(punten2,2))
class Meta:
managed = True
ordering = ['id']
I need to sum punten1 for idspeler1 + sum of punten2 for idspeler2 when idspeler1 == idspeler2.
I know how to do it in mysql and I did it with stored procedure, but I’m trying to do it in django but I have no clue how to start.
Can someone give me a starting point.