2010-11-03 30 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