0

ここのチュートリアルに従って、年/月ベースのブログ アーカイブを作成しようとしています。'www.example.com/blog/2013/feb' または 'www.example.com/blog/2013' のような URL にアクセスしようとするとTypeError: 'str' object is not callable、上記の方法を使用して取得します。

使用される方法が上記のチュートリアルと同じであるかどうかはあまり気にしません。ユーザーが「example.com/blog/2013/」にアクセスすると、アーカイブが機能して、作成されたオブジェクトのリストが表示されるようにしたいだけです2013.これが私がこれまでに持っているものです:

ビュー:

from django.views.generic import date_based

def post_archive_year(request, year):
    return date_based.archive_year(
        request,
        year=year,
        date_field='date',
        queryset=Blog.objects.date(),
    )

def post_archive_month(request, year, month):
    return date_based.archive_month(
        request,
        year=year,
        month=month,
        date_field='date',
        queryset=Blog.objects.date(),
    )

モデル:

class Blog(models.Model):
    name = models.CharField(max_length=50)
    date = models.DateTimeField()
    slug = models.SlugField()
    article = models.TextField()
    tags = TaggableManager()
    def __unicode__(self):
        return self.name

    @permalink
    def get_absolute_url(self):
        return ('blog_detail', None, {
            'year': self.date.year,
            'month': self.date.strftime('%b').lower(),
            'slug': self.slug
        })

URL:

url(r'^blog/(?P<year>\d{4})/$', view='post_archive_year', name='post_archive_year'),
url(r'^blog/(?P<year>\d{4})/(?P<month>\w{3})/$', view='post_archive_month', name='post_archive_month'),

日付ベースのアーカイブを作成するのに役立つアイデアをありがとう。ご意見をお待ちしております。

4

1 に答える 1

0

メソッドは__unicode__Unicode オブジェクトを返す必要があります。

あなたが戻っself.nameてきたのはCharField. Unicode オブジェクトに自動的に変換できるのは、文字列またはバッファ プロトコル オブジェクトのみです。

これを試して:

def __unicode__(self):
    return u'%s' % self.name

組み込みの Python 型、または独自の__unicode__メソッドを持つユーザー定義クラスの別のオプション:

def __unicode__(self):
    return unicode(self.name)
于 2013-03-24T12:16:04.173 に答える