Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django查询错误:Can';t转换为';方法';对象隐式地访问str_Python_Django - Fatal编程技术网

Python Django查询错误:Can';t转换为';方法';对象隐式地访问str

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

我有以下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(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,我不知道。谢谢