Python 如何对数据库进行更改?(DRF)
在Post对象的模型中,我有字段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
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()
查看此处了解更多信息:我相信重载模型管理器可以让您添加自定义过滤器。您将需要使用实际列而不是属性来编写逻辑。我相信重载模型管理器将允许您添加自定义筛选器。您将需要使用实际列而不是属性来编写逻辑。