我的models.py中有以下代码可以正常工作。
def get_city_name(self):
return self.city.name
def get_state_name(self):
return self.state.name
class AuthorMeta(Page):
author=models.OneToOneField(User)
city = models.ForeignKey('Cities', null=True, blank=True, on_delete=models.SET_NULL, related_name='related_author')
state = models.ForeignKey('States', null=True, blank=True, on_delete=models.SET_NULL, related_name='related_author')
city_name = property(get_city_name)
state_name = property(get_state_name)
但我希望通过单一功能实现同样的目标。 我基本上遇到了传递参数的问题。即使我尝试以下操作,它也不起作用:
def get_name(self, attr):
return getattr(self, attr)
class AuthorMeta(Page):
##### city, state, etc. defined here #####
city_name = property(get_name('city'))
state_name = property(get_name('state'))
导致不同的错误get_name() takes exactly 2 arguments (1 given)