我对 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()}'
通常您会构建一个
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',)