在实时中设置默认年份为当前年份,且不使用DateField

0 投票
1 回答
1117 浏览
提问于 2025-04-17 12:19

这是我现在的做法。

class Season(models.Model):
    Name = models.CharField(max_length=20)
    Year = models.CharField(max_length=6)
    start_date = models.DateField()
    end_date = models.DateField()
    league = models.ManyToManyField(League)
    def __init__(self):
        """
        Setting default year current year
        """
        today = datetime.date.today()
        today = today.timetuple()
        defaultyear = today[0]
        defaultyear = str(defaultyear)
        self.Year = defaultyear
        return self.Year

我这样用init对吗?还是说我漏掉了什么?或者我应该把init改成别的名字,比如'setyear'?如果是这样的话,我在Django后台该怎么调用它呢?

//鼠标

1 个回答

2

你可以使用表单字段的 default 参数,这个参数也可以是一个可调用的函数。具体可以参考这个链接:https://docs.djangoproject.com/en/dev/ref/models/fields/#default

在这种情况下,你可以把 __init__ 改名为 setyear(并把它移到类的外面),然后用 Year = models.CharField(max_length=6, default=setyear) 来定义这个字段。

撰写回答