Вопрос о моделях Django: не возвращает имя представления строки модели - PullRequest
0 голосов
/ 03 ноября 2010

Здравствуйте, у меня проблемы с моими моделями.Сдается мне, что я не могу назвать имя представления строки.В оболочке python вместо этого я получаю объект Payment.

[<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

Ответы [ 3 ]

0 голосов
/ 03 ноября 2010

Когда ваша модель печатается в списке, вызывается не метод __unicode__, а __repr__ (который также можно реализовать с более простым выводом, чем __unicode__)

0 голосов
/ 04 ноября 2010

ОК, похоже, я так и сделаю. Я удалил поле line_total, потому что 1-я причина мне не нужна, а 2-я причина в том, что почему-то не было столбца, созданного для account_payment.line_total. Так в моей базе данных MySQL. Я также сделал это так, чтобы он возвращал unit_price, а не объект. В любом случае, спасибо всем за помощь.

0 голосов
/ 03 ноября 2010

Отступ на __unicode__() неверный. Он должен быть на том же уровне, что и line_total().

...