Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在视图集使用的Django模型中添加列的自定义行级处理_Python_Django_Django Rest Framework - Fatal编程技术网

Python 如何在视图集使用的Django模型中添加列的自定义行级处理

Python 如何在视图集使用的Django模型中添加列的自定义行级处理,python,django,django-rest-framework,Python,Django,Django Rest Framework,这是我的模型,例如: class Lics(models.Model): files_id = models.IntegerField(blank=True, null=True) seqno = models.IntegerField(blank=True, null=True) expire = models.TextField(blank=True) 字段“expire”带有日期。我有一个函数,在调用api时从“现在”开始执行增量。调用Lics.objects.a

这是我的模型,例如:

class Lics(models.Model):
    files_id = models.IntegerField(blank=True, null=True)
    seqno = models.IntegerField(blank=True, null=True)
    expire = models.TextField(blank=True)
字段“expire”带有日期。我有一个函数,在调用api时从“现在”开始执行增量。调用Lics.objects.all()时,如何以及在何处在视图集中添加一个额外字段,该字段已添加为第四个字段,显示“天”=4,例如,如果许可证从现在起4天到期


预期输出:
[{files\u id:1,seqno:2,expire:'4-jan-2019','days':4}]

我可能会将其添加为一个
序列化方法字段
,以便根据请求进行计算。事实上,这很类似于。您需要以下内容(注意:我没有测试过,它只是对文档化示例的一个轻微修改):


我可能会将其添加为一个
SerializerMethodField
,以便根据请求进行计算。事实上,这很类似于。您需要以下内容(注意:我没有测试过,它只是对文档化示例的一个轻微修改):


@RishiG有一个很好的解决方案。作为替代方案,还可以创建模型属性

class Lics(models.Model):
    files_id = models.IntegerField(blank=True, null=True)
    seqno = models.IntegerField(blank=True, null=True)
    expire = models.TextField(blank=True)

    @property
    def days(self):
        // calculation code goes here
然后,您只需在序列化程序的“fields”参数中包含“days”

class LicSerializer(serializers.ModelSerializer):

class Meta:
    model = Lic
    fields = ('files_id', 'seqno', 'expire', 'days')

我通常根据我希望访问这些数据的位置来决定我的方法。例如,如果我想直接对模型实例的
days
属性进行操作,我会将其放入模型中。如果我只关心在视图中冒泡这些数据,我会将其放入序列化程序。

@RishiG有一个很好的解决方案。作为替代方案,还可以创建模型属性

class Lics(models.Model):
    files_id = models.IntegerField(blank=True, null=True)
    seqno = models.IntegerField(blank=True, null=True)
    expire = models.TextField(blank=True)

    @property
    def days(self):
        // calculation code goes here
class LicSerializer(serializers.ModelSerializer):

class Meta:
    model = Lic
    fields = ('files_id', 'seqno', 'expire', 'days')
然后,您只需在序列化程序的“fields”参数中包含“days”

class LicSerializer(serializers.ModelSerializer):

class Meta:
    model = Lic
    fields = ('files_id', 'seqno', 'expire', 'days')

我通常根据我希望访问这些数据的位置来决定我的方法。例如,如果我想直接对模型实例的
days
属性进行操作,我会将其放入模型中。如果我只关心在视图中冒泡这些数据,我会将其放入序列化程序。

谢谢,这就是我要找的。太好了!很高兴这有帮助。当你有机会的时候,点击复选标记接受答案。谢谢你这就是我一直在寻找的。太好了!很高兴这有帮助。如果有机会,请单击复选标记以接受答案。
class LicSerializer(serializers.ModelSerializer):

class Meta:
    model = Lic
    fields = ('files_id', 'seqno', 'expire', 'days')