簡體   English   中英

使用當前日期調整Django CharField中的選擇

[英]Adjust Choice in Django CharField using Current Date

我正在一個Django項目中,我的models.py文件如下所示:

STATUS = (
    ('Active', 'Active'),
    ('Inactive', 'Inactive')
)

class ClassName(models.Model):
    ...
    deadline = models.DateTimeField('Deadline')
    status = models.CharField(max_length=10, choices=STATUS)

我想做的是,如果當前日期大於為截止日期輸入的日期,則將狀態從“活動”更改為“不活動”。 有人知道我該怎么做嗎?

您可以重寫Model.save()方法來調整彼此依賴的字段:

from django.utils import timezone

class ClassName(models.Model):
    ...
    deadline = models.DateTimeField('Deadline')
    status = models.CharField(max_length=10, choices=STATUS)

    def save(self, *args, **kwargs):
        if self.deadline < timezone.now():
            self.status = 'Inactive'
        super(ClassName, self).save(*args, **kwargs)

要修復以前創建的實例,可以在python shell中執行以下操作:

ClassName.objects.filter(deadline__lt=timezone.now()).update(status='Inactive')

這會將所有ClassName實例標記為處於非活動狀態,且其截止日期小於timezone.now()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM