Django:设置语言

问题描述 投票:0回答:1

我对 Django 完全陌生

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

我的用户模型看起来像这样

型号:

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个回答
0
投票

通常您会构建一个

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

Profile
之间添加一个 Language
 
[Django-doc]

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',)
© www.soinside.com 2019 - 2024. All rights reserved.