I have the following models:
class Position(BaseModel):
name = models.CharField()
class Metric(BaseModel):
name = models.CharField()
class PositionKPI(BaseModel):
position = models.ForeignKey(Position)
metric = models.ForeignKey(Metric)
expectation = models.FloatField()
class Employee(BaseModel):
position = models.ForeignKey(Position)
class EmployeeKPI(BaseModel):
employee = models.ForeignKey(Employee)
metric = models.ForeignKey(Metric)
value = models.FloatField()
def kpi(self):
return PositionKPI.objects.filter(position=self.employee.position, metric=self.metric).first()
I believe it’s possible to rewrite the kpi
method as a relation.
In SQL it would look something like this:
select
positionkpi.*
from employeekpi
join employee on employee.id = employeekpi.employee_id
join positionkpi on positionkpi.id = employee.position_id
and positionkpi.metric_id = employeekpi.metric_id
Please advise how to do it
3