Django:设置语言

Django: set language

提问人:SpicyyRiice 提问时间:11/9/2023 更新时间:11/9/2023 访问量:21

问:

我是 Django 的新手

我想在管理面板中创建一个语言字段,管理员可以设置用户的语言,可以是 1 种或多种语言。例如,第 1 个人会说英语、法语和日语,而另一个人只会说法语。我们怎样才能做到这一点?

enter image description here

我的用户模型如下所示

型:

from django.contrib.auth.models import User



# Create your models here.
class Profile(models.Model):

    def __str__(self):
        return f'{self.user.get_full_name()}'
python django django-models django-admin

评论


答:

1赞 willeM_ Van Onsem 11/9/2023 #1

通常,您可以构建一个模型,例如:Language

class Language(models.Model):
    code2 = models.CharField(max_length=2, primary_key=True)
    name = models.CharField(max_length=128, unique=True)

    def __str__(self):
        return self.name

我们可以填充它,例如用 和 和 。('en', 'English')('fr', 'French')('ja', 'Japanese')

接下来,我们在 和 之间添加一个 ManyToManyField [Django-doc]ProfileLanguage

class Profile(models.Model):
    languages = models.ManyToManyField(Language, related_name='speakers')

    def __str__(self):
        return f'{self.user.get_full_name()}'

在管理中,我们可以通过以下方式更方便地选择语言:

from django.contrib import admin


class ProfileAdmin(admin.ModelAdmin):
    # …
    autocomplete_fields = ('languages',)