私はDjangoの翻訳者のためにウェブで作業しています。各翻訳者は、異なるレベルで異なる言語を話すことができます。翻訳者1はレベル「プロフェッショナル」で英語を話すことができ、翻訳者2はレベル「ネイティブ」で英語を話すことができます。同じクラスのDjangoオブジェクトで階層を設定する方法は?
Levels
は4種類あります。
class LanguageLevel(models.Model):
language = models.ForeignKey(Language,
help_text=_('Choose a language'), related_name='language_levels')
level = models.ForeignKey(Level,
help_text=_('Choose a level of the language'))
price_multiplier = models.FloatField(default=0.0,
help_text=_('Type a price multiplier'))
def __str__(self):
return '{}: {}'.format(self.language, self.level)
class Meta:
unique_together = (('level', 'language'),)
さて、問題は何でしょう:
class Level(models.Model):
LEVEL_CHOICES = (
('unknown', _('Unknown')),
('standard', _('Standard level')),
('professional', _('Professional level')),
('native', _('Native speaker level')),
)
name = models.CharField(max_length=40, choices=LEVEL_CHOICES, blank=False, null=False,
help_text=_('Choose a level'))
def __str__(self):
return '{}'.format(self.get_name_display())
とモデルLanguageLevel
(レベルはモデルです)。問題は、翻訳者がレベル「標準」でEnglish
と話したいと思っている場合、実際には、翻訳者がレベルで「標準」、「専門家」、または「ネイティブ」のいずれかのレベルにEnglish
を話すようにしたいのです。 「ネイティブ」も「標準」を話すことができます。
このように私のプロジェクトには多くの状況がありますので、私はこれを簡素化したいと思います。
のでunknown
< standard
< professional
< native
。今私がすべての翻訳者が英語を話すのをstandard
にしようとすると、professional
とnative
も得たいと思う。
アドバイスをいただけますか?