具体报价问题

时间:2010-10-22 14:39:32

标签: python django django-models django-forms django-views

这是我的问题。我有一个模型项目,其中有一个引用字段。当创建一个新的项目实例时,我需要将年份的最后两位数加一个连字符添加到“quote”字段的开头。防爆。 2010 =“10-”。我只是不太确定如何启动它?

截至目前,我已将“10-”硬编码为预引号字段,但我不想这样做。

models.py

class Project(models.Model):
client = models.ForeignKey(Clients, related_name='projects')
created_by = models.ForeignKey(User, related_name='created_by')


#general information
proj_name = models.CharField(max_length=255, verbose_name='Project Name')
pre_quote = models.CharField(max_length=3,default='10-')
quote = models.IntegerField(max_length=10, verbose_name='Quote #', unique=True)
desc = models.TextField(verbose_name='Description')
starts_on = models.DateField(verbose_name='Start Date')
completed_on = models.DateField(verbose_name='Finished On')

之前有人必须这样做吗?或者有任何建议吗?

2 个答案:

答案 0 :(得分:1)

试试这个:

def save(self):
    today = datetime.date.today()
    self.quote = "%s-%s" % (str(today.year)[2:4], self.quote)

假设您导入了日期时间。

答案 1 :(得分:0)

您现有的引用字段设置为整数。您需要将其设置为文本字段。完成后,您可以覆盖save()函数,将“10-”添加到字段中。

class Project(models.Model):
  client = models.ForeignKey(Clients, related_name='projects')
  created_by = models.ForeignKey(User, related_name='created_by')
  proj_name = models.CharField(max_length=255, verbose_name='Project Name')
  quote = models.TextField(max_length=10, verbose_name='Quote #', unique=True)
  desc = models.TextField(verbose_name='Description')
  starts_on = models.DateField(verbose_name='Start Date')
  completed_on = models.DateField(verbose_name='Finished On')

  def save(self):
    self.quote = "10-" + self.quote