首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >创建get_absolute_url()

创建get_absolute_url()
EN

Stack Overflow用户
提问于 2012-07-31 04:49:49
回答 3查看 622关注 0票数 0

当我尝试发布时,我得到了一个404错误。但是错误是event objects don't have get_absolute_url() methods

代码语言:javascript
复制
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

我该如何正确地让它工作呢?提前感谢您的帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-07-31 04:54:43

您需要使用格式字符串。

代码语言:javascript
复制
def get_absolute_url(self):
    return "/event/%d" % self.id
票数 3
EN

Stack Overflow用户

发布于 2012-07-31 04:56:17

来自get_absolute_urlreturn值正在尝试组合字符串和数字。

代码语言:javascript
复制
def get_absolute_url(self):
    return "/event/{0}".format(self.id)
票数 0
EN

Stack Overflow用户

发布于 2012-08-01 01:19:25

self.id是一个数字,您正在尝试将其转换为url中的数字...如果你把它的类型转换成你想要的字符串,你仍然可以做"+“操作...所以你必须这样做:

代码语言:javascript
复制
def get_absolute_url(self):
    return "/event/" + str(self.id)

它会起作用的。通过这种方式,您可以进行Unicode转换等等。通过指定您想要的输出的确切类型。然而,其他构造似乎更快。但我更喜欢这段代码,因为这段代码的视觉清晰度……

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11729342

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档