Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/279.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.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 如何对数据库进行更改?(DRF)_Python_Django_Django Rest Framework - Fatal编程技术网

Python 如何对数据库进行更改?(DRF)

Python 如何对数据库进行更改?(DRF),python,django,django-rest-framework,Python,Django,Django Rest Framework,在Post对象的模型中,我有字段created=models.DateTimeField(auto\u now\u add=True) 还有另一个字段结束时间,其中-今天的日期+提前1个月。也就是说,如果创建了一篇文章,那么它将在创建的字段中显示今天的日期(2020年1月5日),在结束时间字段中显示一个月前的日期(2020年2月5日) 除此之外,我还需要添加is_actual字段,其中- @property def is_actual(self): return bool(sel

在Post对象的模型中,我有字段
created=models.DateTimeField(auto\u now\u add=True)

还有另一个字段
结束时间
,其中-今天的日期+提前1个月。也就是说,如果创建了一篇文章,那么它将在
创建的
字段中显示今天的日期(2020年1月5日),在
结束时间
字段中显示一个月前的日期(2020年2月5日)

除此之外,我还需要添加
is_actual
字段,其中-

  @property
  def is_actual(self):
    return bool(self.end_time and self.end_time > now())
但是在这种情况下,我不能使用过滤器来显示字段,其中
是\u actual==true
。对我来说,使用此字段的过滤器非常重要

需要做什么才能通过
is\u actual
字段应用过滤器?据我所知,这里您需要每天做一次,例如,更改数据库。但是怎么做呢?要编写某种自定义脚本,或者以某种方式使用Django方法来完成它?

我建议使用“is_actual=model.BooleanField(default=False)”并在clean方法中执行必要的操作。例如:

class MyModel(models.Model):
      is_active=models.BooleanField(default=False)
      ...
      def clean(self):
          super(MyModel, self).clean()
          if self.end_time:
             self.is_active = self.end_time > now()
查看此处了解更多信息:

我建议创建“is_actual=model.BooleanField(default=False)”,并在clean方法中执行必要的操作。例如:

class MyModel(models.Model):
      is_active=models.BooleanField(default=False)
      ...
      def clean(self):
          super(MyModel, self).clean()
          if self.end_time:
             self.is_active = self.end_time > now()

查看此处了解更多信息:

我相信重载模型管理器可以让您添加自定义过滤器。您将需要使用实际列而不是属性来编写逻辑。我相信重载模型管理器将允许您添加自定义筛选器。您将需要使用实际列而不是属性来编写逻辑。