Python 将默认值更改为函数django

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

因此,我试图根据用户之前的设置更改默认语言。我的问题是,我调用的函数的值是“English”或“西班牙语”,但我需要一个像“en”或“esp”这样的短期术语才能使它实际工作。当我尝试运行它时,也会出现以下错误消息:userlang()正好接受1个参数(给定0)

以下是我尝试过的:

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
。解决方法是删除
默认值
(或保留它并使用
语言
选项中的一个进行设置),然后覆盖该方法并在其中设置值。