2010-11-03 32 views
0

你好,我似乎有我的模型的麻煩。在我看來,我無法命名字符串表示名稱。在python shell中,我得到一個Payment對象。Django模型問題:不返回模型字符串表示名稱

[<Payment: Payment object>, <Payment: Payment object>] 

這是我的模型。如果我可以移除定義line_total的位置,應該會更簡單一些,但正如您已經知道的,生成表格後編輯模型並不那麼簡單。

class Payment(models.Model): 
    unit_price = models.DecimalField(max_digits=12, decimal_places=2) 
    discount = models.DecimalField(max_digits=12, decimal_places=2) 
    payment_terms = models.CharField(max_length=80) 
    amount = models.DecimalField(max_digits=12, decimal_places=2) 
    line_total = models.DecimalField(max_digits=12, decimal_places=2) 

    def line_total(): 
     unit_price -= discount 
     return line_total 

     def __unicode__(self): 
      return self.line_total 
+1

您的代碼有很多問題需要解決:'line_total()'方法中聲明'unit_price'和'line_total'。此外,'line_total'是一個類方法,並將採用'self'參數。 – 2010-11-03 12:54:50

回答

-1

OK(你也可以用通常比__unicode__一個簡單的輸出實現),看起來像我要保持它這條路。我已經刪除line_total字段,因爲第一個原因,我真的不需要它&第二個原因是,不知何故,沒有爲accounts_payment.line_total創建的列。所以在我的MySQL數據庫。我現在也做了它,所以它返回一個unit_price而不是一個對象。無論如何,要求每個人都幫助我。

+0

你爲什麼接受自己的答案作爲最佳答案?坦率地說,這完全不是答案。您在代碼中留下了其他人在評論中指出的錯誤。就像line_total的重疊字段名稱和方法名稱一樣。所以你的答案不應該被接受。 – 2011-10-13 14:44:52

0

__unicode__()的縮進不正確。它應該與line_total()處於同一水平。

+0

我需要做什麼樣的改變? – Shehzad009 2010-11-03 11:50:02

+0

您需要將其縮進到與'line_total()'相同的級別。 – 2010-11-03 11:50:37

+0

我似乎在嘗試將該Unicode縮進到同一行時出現很多這些錯誤「Caught OperationalError呈現時:(1054,」未知列'account_payment.line_total'在'字段列表'中)「 – Shehzad009 2010-11-03 12:13:26

0

當你的模型的列表內的印刷,這不是__unicode__方法被調用,但__repr__

+0

確實如此,但Django模型中的默認'__repr__'調用'__unicode__',所以通常只需定義它即可。 – 2010-11-03 13:55:46

+0

不完全按照:http://code.djangoproject.com/browser/django/trunk/django/db/models/base.py#L360。 – 2010-11-03 14:09:20