简体   繁体   English

使用Django通过default()将用户语言保存在模型中

[英]Save user language in a model through default() with Django

I would like to save the language of the user each time a new model instance is created: 我想在每次创建新的模型实例时保存用户的语言:

models.py: models.py:

def getlanguage(request):
    lang = request.LANGUAGE_CODE
    return lang


class Comment(models.Model):
    language = models.CharField(max_length=100, blank=True, default=getlanguage)

Django generates the following error: TypeError: getlanguage() takes exactly 1 argument (0 given) Django生成以下错误:TypeError:getlanguage()恰好接受1个参数(给定0)

How to pass the request to the function? 如何将请求传递给函数?

Thank you! 谢谢!

Your save method needs to be overridden like this. 您的保存方法需要像这样被覆盖。

class Comment(models.Model):
    language = models.CharField(max_length=100, blank=True, default='')

    def save(self, *args, **kwargs):
        default_language = kwargs.pop('default_language', None)
        if not self.language and default_language is not None:
            self.language = default_language
        super(Comment, self).save(*args, **kwargs)

And you can pass the parameter when save() is called on an object in the views 当在视图中的对象上调用save()时,您可以传递参数

comment = Comment()
comment.save(default_language=request.LANGUAGE_CODE)

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM