Python 将默认值更改为函数django
因此,我试图根据用户之前的设置更改默认语言。我的问题是,我调用的函数的值是“English”或“西班牙语”,但我需要一个像“en”或“esp”这样的短期术语才能使它实际工作。当我尝试运行它时,也会出现以下错误消息:userlang()正好接受1个参数(给定0) 以下是我尝试过的:Python 将默认值更改为函数django,python,django,default-value,Python,Django,Default Value,因此,我试图根据用户之前的设置更改默认语言。我的问题是,我调用的函数的值是“English”或“西班牙语”,但我需要一个像“en”或“esp”这样的短期术语才能使它实际工作。当我尝试运行它时,也会出现以下错误消息:userlang()正好接受1个参数(给定0) 以下是我尝试过的: def userlang(self): return (self.user.userprofile.language) class 123(models.Model language = models
def userlang(self):
return (self.user.userprofile.language)
class 123(models.Model
language = models.CharField(verbose_name=_(u"Language"),
max_length=4, choices=settings.LANGUAGES,default=userlang)
我希望有人能帮助我 你可以使用这样的东西:
class CustomModel(models.Model):
language = gender = models.CharField(
max_length=2,
choices=(('en', 'English'),('es', 'Spanish')),
default=None,
blank=True,
null=True
)
那么使用起来就很简单了
当然,如果你有上百种语言的可能性,你应该做一个单一的联想,而不是使用这样的模式
顺便说一句,你的例子格式和书写都很糟糕。对于您的错误,只需删除函数参数中的“self”。。。只有当它是class方法时才需要它。您可以使用这样的东西:
class CustomModel(models.Model):
language = gender = models.CharField(
max_length=2,
choices=(('en', 'English'),('es', 'Spanish')),
default=None,
blank=True,
null=True
)
那么使用起来就很简单了
当然,如果你有上百种语言的可能性,你应该做一个单一的联想,而不是使用这样的模式
顺便说一句,你的例子格式和书写都很糟糕。对于您的错误,只需删除函数参数中的“self”。。。只有当它是class方法时才需要它。这是我第一次尝试的,但它不起作用,因为我得到的userlang没有定义。该名称不是我为帖子更改的原始名称,但谢谢:)按原样使用,并从
userlang
函数中删除self
参数。当然,这不起作用,因为您在其中引用了self
。解决方法是删除默认值
(或保留它并使用语言
选项中的一个设置),然后覆盖该方法并在其中设置值。这是我首先尝试的方法,但它不起作用,因为没有定义我获取的userlang。该名称不是我为帖子更改的原始名称,但谢谢:)按原样使用,并从userlang
函数中删除self
参数。当然,这不起作用,因为您在其中引用了self
。解决方法是删除默认值
(或保留它并使用语言
选项中的一个进行设置),然后覆盖该方法并在其中设置值。