我正在尝试创建一个新表(Payslip model
),该表将包含截止日期员工的计算工资。
我希望Payslip.salary
从Employee.compute_pay()
获得价值
给定上面url链接中的示例,我的views.py
应该是什么样?
这是进行此类处理的最佳方法吗?还是有任何可以帮助我在这里做什么的图书馆?
class Employee(models.Model):
name = models.CharField(max_length=20)
rate = models.IntegerField()
absent = models.IntegerField()
def __str__(self):
return self.name
def compute_pay(self):
daily = rate / 20
return rate - (daily*absent)
class Payslip(models.Model):
name = models.CharField(max_length=20)
salary = models.IntegerField()
def __str__(self):
return self.name
def compute(request):
if request.method == "POST":
return render(request,'payroll/compute/compute.html')
答案 0 :(得分:0)
我认为不需要其他模型的Payslip,而且两个模型之间都没有ForeignKey连接才能起作用。
考虑到您的要求,属性装饰器应该可以工作。阅读有关@property的工作原理。基本上,它充当伪模型字段,请记住,此字段的值未存储在数据库中的任何位置,但是它是针对此类情况(其中该字段根据其他字段进行更改并且需要读取)而量身定制的。
尝试一下
class Employee(models.Model):
name = models.CharField(max_length=20)
rate = models.IntegerField()
absent = models.IntegerField()
def __str__(self):
return self.name
@property
def compute_pay(self):
daily = self.rate / 20
return (self.rate - (daily*self.absent))
您可以像其他任何模型字段一样,通过Employee.compute_pay来获取员工的工资