我有以下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)
基本上是2个表。一个用于城市实体"和其他所有翻译。
每当我使用Django管理界面添加新城市时,我都会收到以下错误:
无法转换'方法'隐含地反对str
它引用了以下代码行:
return 'City: ' + self.get_city_en
我猜我的错误在于我正在尝试运行的查询。
我的目标:
因为" City" table不存储任何有助于通过名称识别城市的字符串,我想返回"英语" CityLanguage表中城市名称的变体。
有人能帮我辨别我做错了什么吗?
感谢。
答案 0 :(得分:2)
def __str__(self):
return 'City: ' + self.get_city_en()
您需要函数调用的结果。你正在做的是尝试将函数与字符串连接起来。考虑:
def foo():
return "test"
print foo # <function foo at 0x1052b0aa0>
print foo() # "Test"
答案 1 :(得分:0)
感谢@Kit Sunde得到了答案。有2个错误。更正了以下代码:
return 'City: ' + self.get_city_en()
searched_city = CityLanguage.objects.filter(city_language__exact='EN', city__exact=self)
我试图通过指定不正确的models.CityLanguage来引用CityLanguage表。应该只是CityLanguage。