Python 如何在同一类的Django对象上设置层次结构?
我正在为Django的翻译工作。每个翻译人员可以在不同的层次上说不同的语言。因此,译者1可以说“专业”级别的英语,译者2可以说“母语”级别的英语 有四种不同的Python 如何在同一类的Django对象上设置层次结构?,python,django,Python,Django,我正在为Django的翻译工作。每个翻译人员可以在不同的层次上说不同的语言。因此,译者1可以说“专业”级别的英语,译者2可以说“母语”级别的英语 有四种不同的级别。(级别为模型) 和型号语言级别: class LanguageLevel(models.Model): language = models.ForeignKey(Language, help_text=_('Choose a language'), relate
级别
。(级别为模型)
和型号语言级别
:
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'),)
现在有什么问题了。问题是,例如,如果我想让说英语的译者达到“标准”水平,事实上,我想让说英语的译者达到“标准”、“专业”或“母语”水平,因为那些会说“母语”的人也会说“标准”
在我的项目中有很多类似的情况,所以我想简化一下
因此,unknown
您可以使用integerfield而不是charfield。这使得在级别上的查询变得简单
LEVEL_CHOICES = (
(0, _('Unknown')),
(1, _('Standard level')),
(2, _('Professional level')),
(3, _('Native speaker level')),
)
level = models.IntegerField(choices=LEVEL_CHOICES, default=0,
help_text=_('Choose a level'))
我不知道你为什么需要级别模型。我会把一切都放在语言层面上
您的查询如下所示:
LanguageLevel.objects.filter(level__gte=1, language__name='English')
可以使用integerfield而不是charfield。这使得在级别上的查询变得简单
LEVEL_CHOICES = (
(0, _('Unknown')),
(1, _('Standard level')),
(2, _('Professional level')),
(3, _('Native speaker level')),
)
level = models.IntegerField(choices=LEVEL_CHOICES, default=0,
help_text=_('Choose a level'))
我不知道你为什么需要级别模型。我会把一切都放在语言层面上
您的查询如下所示:
LanguageLevel.objects.filter(level__gte=1, language__name='English')