Str*_*ire 5 django datetime django-models
我在这里的模型中有两个字段:
is_active = models.BooleanField(default=False)
active_from = models.DateTimeField(blank=True)
Run Code Online (Sandbox Code Playgroud)
当is_active设置为True,我想active_from进行更新,以当前日期时间。
我该怎么做?如果在一个领域也有一种更清洁的方法,我愿意接受替代方案。
谢谢!
编辑:我想在模型中包含它以保持封装。这将是 API 的一部分。
一种方法是save()在您的自定义模型上定义一个方法来寻找is_active. 没有简单的方法可以实现这一点:您需要is_active通过定义自定义__init__-method手动保存值的先前状态。它可能看起来像这样:
class MyModel(models.Model):
is_active = models.BooleanField(default=False)
active_from = models.DateTimeField(blank=True)
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
self.__is_active = self.active
def save(self, *args, **kwargs):
if self.is_active and not self.__is_active:
self.active_from = datetime.now()
super().save(*args, **kwargs)
Run Code Online (Sandbox Code Playgroud)
这个问题有一些答案可能会有所帮助。
当您同时切换is_active更新时。active_from
例如:
def toggle_user_active_and_update(request, *a, **kw):
request.user.is_active = !request.user.is_active
request.user.active_from = datetime.datetime.now()
request.user.save()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
11056 次 |
| 最近记录: |