我想让一个字段根据之前输入的日期自动生成月份。
models.py
class Projects(models.Model):
Name = models.CharField(max_length=100, null=True, blank=False)
Date = models.DateField(null=True, blank=False)
Month = models.CharField(max_length=100, null=True, blank=False)
def get_month(self):
if self.Date:
self.Month = self.Date.strftime("%B")
self.save()
您可以简单地覆盖自己save
以添加自动字段,而不用调用save
新方法:
class Projects(models.Model):
Name = models.CharField(max_length=100, null=True, blank=False)
Date = models.DateField(null=True, blank=False)
Month = models.CharField(max_length=100, null=True, blank=False)
def save(self, *args, **kwargs):
if self.Date:
self.Month = self.Date.strftime("%B")
super(Model, self).save(*args, **kwargs)
但是,Month
只有在实例保存后,以上内容才可用。
您可以改为创建一个属性,以便Month
可以从模型的实例中使用该属性,并且还可以防止在数据库中添加重复的信息:
class Projects(models.Model):
Name = models.CharField(max_length=100, null=True, blank=False)
Date = models.DateField(null=True, blank=False)
@property
def Month(self):
if self.Date:
return self.Date.strftime("%B")
return "No date entry"
您可以像这样使用属性:
import datetime.date as dt
# import your Projects model
p = Projects(Name='ceuskervin', Date= dt.today())
print(p.Month)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句