0

404投稿しようとするとエラーが発生します。しかし、エラーはevent objects don't have get_absolute_url() methods

class Event(models.Model):
    title = models.CharField(max_length=200)
    description = models.TextField()
    date = models.DateTimeField()
    created = models.DateTimeField(auto_now_add=True)
    modified = models.DateTimeField(auto_now=True)
    avatar = models.ImageField(upload_to='avatars/events/', null=True, blank=True)
    tags = models.ManyToManyField(Tag, null=True, blank=True)

    class Meta:
        ordering = ['-date']

    def __unicode__(self):
        return self.title

    # I made this, but this doesn't work
    def get_absolute_url(self):
        return "/event/" + self.id

    # it returns : 
            Exception Type:  TypeError
            Exception Value: cannot concatenate 'str' and 'int' objects

これを適切に機能させるにはどうすればよいですか?よろしくお願いします。

4

3 に答える 3

3

フォーマット文字列を使用する必要があります。

def get_absolute_url(self):
    return "/event/%d" % self.id
于 2012-07-30T20:54:43.150 に答える
0

からのreturnget_absolute_urlは、文字列と数値を結合しようとしています。

def get_absolute_url(self):
    return "/event/{0}".format(self.id)
于 2012-07-30T20:56:17.360 に答える
0

self.idは数値であり、URLの数値に変換しようとしています...タイプを目的の文字列に変換する場合でも、「+」操作を実行できます...したがって、次のことを行う必要があります。

def get_absolute_url(self):
    return "/event/" + str(self.id)

そしてそれは動作します。このようにして、Unicode変換などを行うことができます...正確なタイプを指定することにより、出力を作成します。ただし、他の構造の方が速いようです。しかし、このコードで何が起こっているのかが視覚的に明確であるため、私はこれを好みます...

于 2012-07-31T17:19:24.927 に答える