Django 如何使用@property方法生成包含计算的POST方法

Django 如何使用@property方法生成包含计算的POST方法,django,python-3.x,django-rest-framework,django-views,python-requests,Django,Python 3.x,Django Rest Framework,Django Views,Python Requests,我正在使用REST框架和django 1.11构建一个API。我有一个休假类,它有一个@属性方法总天数我想做一个发布方法,其中需要开始日期和返回日期来给出总天数的结果。如何在views.py中执行此操作 以下是离开课程: class Leave(models.Model): LEAVE_STATUS = ( ('A', 'Approved'), ('R', 'Rejected'), ('P', 'Pending'), )

我正在使用
REST框架
django 1.11
构建一个API。我有一个
休假
类,它有一个
@属性
方法
总天数
我想做一个
发布
方法,其中需要
开始日期
返回日期
来给出
总天数
的结果。如何在views.py中执行此操作

以下是
离开
课程:

class Leave(models.Model):

    LEAVE_STATUS = (
        ('A', 'Approved'),
        ('R', 'Rejected'),
        ('P', 'Pending'),

    )

    leave_id = models.AutoField(primary_key=True)
    applicant = models.ForeignKey(
        User, related_name='applicant', on_delete=models.CASCADE)
    approver = models.ForeignKey(
        User, related_name='approver', on_delete=models.CASCADE)
    created_on = models.DateTimeField(auto_now_add=True)
    responded_on = models.DateTimeField(auto_now=True, null=True)
    leave_type = models.ForeignKey(LeaveType)
    number_of_days = models.IntegerField()
    start_date = models.DateField()
    return_date = models.DateField()
    leave_status = models.CharField(
        max_length=1, choices=LEAVE_STATUS, default='R')
    additional_message = models.TextField(max_length=200)
    leave_subject = models.CharField(max_length=40)
    leave_reason = models.TextField(max_length=200)
    total_days = models.IntegerField()
    # approved_by
    # leave count

    @property
    def total_days(self):
        oneday = datetime.timedelta(days=1)
        dt = self.start_date
        total_days = 0
        while(dt <= self.return_date):
            if not dt.isoweekday() in (6, 7):
                total_days += 1
            dt += oneday
        return totaldays

    def __str__(self):
        return self.leave_status
请假(models.Model):
休假状态=(
(‘A’、‘批准’),
(‘R’、‘拒绝’),
('P','Pending'),
)
left\u id=models.AutoField(主键=True)
申请人=models.ForeignKey(
用户,相关用户(在_delete=models.CASCADE上)
审批人=models.ForeignKey(
用户,相关\u name='approver',在\u delete=models.CASCADE上)
已创建\u on=models.DateTimeField(自动\u now\u add=True)
已响应的\u on=models.DateTimeField(auto\u now=True,null=True)
leave_type=models.ForeignKey(LeaveType)
天数=models.IntegerField()
开始日期=models.DateField()
return\u date=models.DateField()
离开_status=models.CharField(
最大长度=1,选项=LEAVE\u状态,默认值=R')
附加消息=models.TextField(最大长度=200)
离开主题=models.CharField(最大长度=40)
离开原因=models.TextField(最大长度=200)
总天数=models.IntegerField()
#批准人
#请假计数
@财产
def总天数(自我):
oneday=datetime.timedelta(天=1)
dt=自启动日期
总天数=0
(dt试试这个,

from rest_framework.views import APIView

class MyAPI(APIView):
    def total_days(self,start_date,return_date):
        oneday = datetime.timedelta(days=1)
        dt = start_date
        total_days = 0
        while (dt <= return_date):
            if not dt.isoweekday() in (6, 7):
                total_days += 1
            dt += oneday
        return total_days

    def post(self,request,*args,**kwargs):
        start_date = request.data.get('start_date')
        return_date = request.data.get('return_date')
        total_days = self.total_days(start_date,return_date)
        # do some other stuff if you want
        return some response
从rest\u framework.views导入APIView
类MyAPI(APIView):
def总天数(自身、开始日期、返回日期):
oneday=datetime.timedelta(天=1)
dt=开始日期
总天数=0

而(dt)是否使用模型序列化程序和视图集?