3

モデルにunicode () メソッドを追加していますが、すべてのオブジェクトをインタラクティブに表示すると機能しません。

import datetime
from django.db import models
from django.utils import timezone

class Poll(models.Model):
    question = models.CharField(max_length=200)
    pub_date = models.DateTimeField('date published')
    def _unicode_(self):
        return self.question
    def was_published_recently(self):
        return self.pub_date >= timezone.now() - datetime.timedelta(days=1)

class Choice(models.Model):
    poll = models.ForeignKey(Poll)
    choice = models.CharField(max_length=200)
    votes = models.IntegerField()
    def _unicode_(self):
        return self.choice
# Create your models here.

(InteractiveConsole

>>> from polls.models import Poll, Choice
>>> Poll.objects.all()
[<Poll: Poll object>]
4

2 に答える 2

3

名前を付ける必要があります__unicode__(両側に 2 つのアンダースコア)。これは Python の予約済みメソッドの厄介な詳細であり、見ただけではすぐにはわかりません。

于 2012-05-10T18:28:27.030 に答える
2

django ドキュメントは、モデルで unicode メソッドを指定する方法を示しています:
https://docs.djangoproject.com/en/dev/ref/models/instances/?from=olddocs#other-model-instance-methods

class Person(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=50)

    def __unicode__(self):
        return u'%s %s' % (self.first_name, self.last_name)

注:これらは DOUBLE アンダースコアです。この例では、単一のアンダースコアのみを使用しています。

ここにリストされているように、標準のpython特殊クラスメソッドです

于 2012-05-10T18:35:28.433 に答える