如何在 Django 模型中存储元组列表?

How to store list of tuples in Django model?

是否可以在 Django 中存储 Model 的元组字段?就我而言,我有一个模型翻译器。翻译人员应该存储有关他可以翻译哪些语言的信息。但可能存在翻译器无法从英语翻译成德语但 he/she 可以反向翻译的情况。

所以一个对象翻译器可以存储这个:

但他不能将英语翻译成德语或荷兰语。

所以我可能要寻找的是存储模型元组的字段(有一个称为语言的模型)。

我推荐的解决方案是创建一个模型来表示每个单向翻译,然后使用 ManyToManyField 关系。

例如:

class LanguagePair(models.Model):
   from_language = models.CharField(max_length=220)
   to_language = models.CharField(max_length=220)

class Translator(models.Model):
   languages = models.ManyToManyField('LanguagePair')
   ...

因此每个翻译器都会有多个与其关联的 LanguagePair 对象,代表他们可以翻译的语言。

这将允许您轻松查询所有可以翻译特定语言的翻译器,因为实际翻译是一个对象。我还建议,作为在 CharFields 中存储语言,您实际上制作另一个 Language 模型并将 LanguagePair 模型更改为具有两个 ForeignKey 字段的语言。

另一种解决方案是从标准 python 列表中序列化列表或语言对,并将其作为 JSON 字符串存储在 CharField 中,但这会使事情变得更难用于查询,将来可能会出现问题。不要害怕将逻辑分离到单独的模型中通常是个好主意,因为这会导致更灵活和可扩展的方法。