2010-10-22 65 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