2010-10-22 63 views
0

这是我的问题。我有一个模型项目,它有一个报价字段。当创建项目的新实例时,我需要将年份的最后2位数字加上一个连字符到“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') 

任何人面前做到这一点?或者有什么建议?

+0

Re:“当创建一个新的项目实例时,我需要将年份的最后两位数字加上一个连字符到”quote“字段的开头。”你不需要那样做。如果您希望用于展示目的,请在展示时进行。如果是用于搜索,则将引用的年份添加到数据库搜索中。无论哪种方式,都无需将此数据添加到您的报价中。 – hughdbrown 2010-10-22 16:26:30

回答

1

试试这个:

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

假设你输入的日期时间。

+0

我已经导入了日期时间,但它给了我这个错误:AttributeError at/project/add/ 'module'object has no attribute'now' – TheLifeOfSteve 2010-10-22 14:59:58

+0

对不起,忘了'.date'在中间。 – kovshenin 2010-10-22 15:02:53

+0

谢谢,这正是我正在寻找的。 – TheLifeOfSteve 2010-10-22 15:10:15

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 
+0

我试过这个,但是当从表单提交保存时,我得到了这个: TypeError at/project/add/ save()不需要参数(1给出) – TheLifeOfSteve 2010-10-22 14:52:46

+0

我很抱歉,已更新的代码。 – 2010-10-22 14:56:58