2017-07-29 74 views
1

我想創建一個自定義的序列,如PO-0001採購訂單,SO-0001銷售訂單等Django的自定義序列格式

我已經試過這樣的事情:

class Requisitions(models.Model): 
    number = models.CharField(max_length=20, verbose_name='Number') 
    transDate = models.DateField(verbose_name='Date') 
    businessUnit = models.ForeignKey(BusinessUnit, verbose_name='Unit') 
    division = models.ForeignKey(Division, verbose_name='Division') 
    remarks = models.TextField 
    status = models.IntegerField(verbose_name='Status') 

    def save(self, *args, **kwargs): 
     letter = 'REQ-' 
     lastNumber = 1 
     self.number = '%s%03d'(letter,lastNumber) 

     super(self.__class__, self).save(*args, **kwargs) 

我在保存新記錄時在管理頁面中出現錯誤:

'str' object is not callable 
Request Method: POST 
Request URL: http://localhost:8000/admin/procurement/requisitions/add/ 
Django Version: 1.11.3 
Exception Type: TypeError 
Exception Value: 'str' object is not callable 

我該如何解決該錯誤?

+0

不相關的問題,但你**絕不能* *使用'self .__ class__'作爲'super'的第一個參數。如果你繼承這個模型,這將導致無限循環。顯式使用類名,或者升級到Python 3,不需要傳遞任何東西。 –

回答

0

您省略了包含字符串格式(%)的運算符。更改以下行:

self.number = '%s%03d'(letter,lastNumber) 

self.number = '%s%03d' % (letter,lastNumber) 

甚至更​​好,使用更現代化的.format()功能:

self.number = '{0}{1:03d}'.format(letter, lastNumber) 
+0

謝謝@Selcuk 我現在工作。 – Pams