2024-05-17 05:06:07 发布
网友
是否可以在Django中存储Model元组的字段?就我而言,我有一个翻译模型。翻译人员应该存储他能翻译的语言的信息。但也有可能会出现这样的情况:译者不能从英语翻译成德语,但他/她可以做相反的方向。在
Model
因此,一个对象转换器可以存储:
但他不能把英语翻译成德语或荷兰语。在
所以我可能需要的是存储模型元组的字段(有一个模型叫做语言)。在
我建议的解决方案是创建一个模型来表示每个单向转换,然后使用ManyToManyField关系。在
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') ...
因此,每个转换器都有多个与之关联的语言对对象,这些对象表示它们可以翻译的语言。在
这将允许您轻松地查询所有能够翻译特定语言的翻译人员,因为实际的翻译是一个对象。我还建议,作为在CharField中存储语言,您实际上需要创建另一个Language模型,并将{}模型更改为该语言的两个ForeignKey字段。在
CharField
Language
ForeignKey
另一种解决方案是从标准python列表序列化列表或语言对,并将其作为一个JSON字符串存储在CharField中,但这将使查询更加困难,并且可能是未来的问题。一般来说,最好不要害怕将逻辑分离成单独的模型,因为这会导致更灵活和可伸缩的方法。在
我建议的解决方案是创建一个模型来表示每个单向转换,然后使用
ManyToManyField
关系。在例如:
因此,每个转换器都有多个与之关联的语言对对象,这些对象表示它们可以翻译的语言。在
这将允许您轻松地查询所有能够翻译特定语言的翻译人员,因为实际的翻译是一个对象。我还建议,作为在}模型更改为该语言的两个
CharField
中存储语言,您实际上需要创建另一个Language
模型,并将{ForeignKey
字段。在另一种解决方案是从标准python列表序列化列表或语言对,并将其作为一个JSON字符串存储在
CharField
中,但这将使查询更加困难,并且可能是未来的问题。一般来说,最好不要害怕将逻辑分离成单独的模型,因为这会导致更灵活和可伸缩的方法。在相关问题 更多 >
编程相关推荐