我想让一个字段根据之前输入的日期自动生成月份。
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()
答案 0 :(得分:2)
您只需覆盖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)