Python Django查询错误:Can';t转换为';方法';对象隐式地访问str
我有以下Django型号:Python Django查询错误:Can';t转换为';方法';对象隐式地访问str,python,django,Python,Django,我有以下Django型号: class City(models.Model): country = models.ForeignKey(Country) city_icon = models.ImageField(null=True, blank=True) city_background = models.ImageField(null=True, blank=True) city_render_separate = models.BooleanField(de
class City(models.Model):
country = models.ForeignKey(Country)
city_icon = models.ImageField(null=True, blank=True)
city_background = models.ImageField(null=True, blank=True)
city_render_separate = models.BooleanField(default=False)
def __str__(self):
return 'City: ' + self.get_city_en
def get_city_en(self):
searched_city = models.CityLanguage.objects.filter(city_language__exact='EN', city__exact=self)
if not searched_city:
return 'Something went wrong...'
else:
return searched_city[0].city_name
class CityLanguage(models.Model):
city = models.ForeignKey(City)
city_language = models.CharField(max_length=2,
choices=LANGUAGE_CHOICES,
default=ENGLISH)
city_name = models.CharField(max_length=100)
city_description = models.TextField(blank=True)
基本上是两张桌子。一个用于“城市实体”,另一个用于其所有翻译
每当我使用Django管理界面添加一个新城市时,我都会遇到以下错误:
无法将'method'对象隐式转换为str
它指的是以下代码行:
return 'City: ' + self.get_city_en
我猜我的错误在于我试图运行的查询
我的目标是:
因为“City”表不存储任何有助于通过名称识别城市的字符串,所以我想从CityLanguage表返回城市名称的“English”变体
有人能帮我找出我做错了什么吗
谢谢
def __str__(self):
return 'City: ' + self.get_city_en()
您需要函数调用的结果。您所做的是尝试将函数与字符串连接起来。考虑:
def foo():
return "test"
print foo # <function foo at 0x1052b0aa0>
print foo() # "Test"
def foo():
返回“测试”
打印foo#
打印foo()#“测试”
多亏了@Kit Sunde,我才得到了答案。有两个错误。更正代码如下:
return 'City: ' + self.get_city_en()
searched_city = CityLanguage.objects.filter(city_language__exact='EN', city__exact=self)
我试图通过指定不正确的models.CityLanguage来引用CityLanguage表。应该是CityLanguage。试试
返回'City:'+self.get\u City\u en()
谢谢!我确实错过了比赛。但是:_str__;()应该与Python3一起使用-引用:@Aivoric Ohh,我不知道。谢谢