当我尝试发布时,我得到了一个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我该如何正确地让它工作呢?提前感谢您的帮助。
发布于 2012-07-31 04:54:43
您需要使用格式字符串。
def get_absolute_url(self):
return "/event/%d" % self.id发布于 2012-07-31 04:56:17
来自get_absolute_url的return值正在尝试组合字符串和数字。
def get_absolute_url(self):
return "/event/{0}".format(self.id)发布于 2012-08-01 01:19:25
self.id是一个数字,您正在尝试将其转换为url中的数字...如果你把它的类型转换成你想要的字符串,你仍然可以做"+“操作...所以你必须这样做:
def get_absolute_url(self):
return "/event/" + str(self.id)它会起作用的。通过这种方式,您可以进行Unicode转换等等。通过指定您想要的输出的确切类型。然而,其他构造似乎更快。但我更喜欢这段代码,因为这段代码的视觉清晰度……
https://stackoverflow.com/questions/11729342
复制相似问题