是否可以在Django中存储Model
元组的字段?就我而言,我有一个模型翻译。翻译人员应存储有关他可以翻译的语言的信息。但是可能存在翻译人员无法从英语翻译成德语的情况,但是他/她可以在相反的方向上做到这一点。
所以一个对象翻译器可以存储它:
但他无法将英语翻译成德语或荷兰语。
所以我可能正在寻找的是存储模型元组的字段(有一个名为Language的模型)。
答案 0 :(得分:4)
我建议的解决方案是创建一个模型来表示每个单向翻译,然后使用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对象,代表他们可以翻译的语言。
这将允许您轻松查询可以翻译特定语言的所有译员,因为实际翻译是对象。我还建议您在CharField
s中存储语言时实际制作另一个Language
模型,并将LanguagePair
模型更改为该语言有两个ForeignKey
字段。
另一种解决方案是序列化标准python列表中的列表或语言对,并将其作为JSON字符串存储在CharField
中,但这会使查询更加困难,并且可能成为未来的问题。通常不要害怕将逻辑划分为单独的模型,因为这会导致更灵活和可扩展的方法。