それぞれの一方向の変換を表すモデルを作成してから、の関係を使用することをお勧めします。例えば
:
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
に言語を格納する代わりに、実際に別のLanguage
モデルを作成し、LanguagePair
モデルを2つのForeignKey
フィールドに変更することをお勧めします。
標準のPythonリストからリストまたは言語のペアをシリアル化し、CharField
にJSON文字列として格納することもできますが、これはクエリを難しくし、将来問題になる可能性があります。一般的には、ロジックを別々のモデルに分けるのを恐れない方が、より柔軟でスケーラブルなアプローチにつながります。
なぜ複数の列を格納できるだけのときにタプルを格納する必要がありますか? from-lan to-lan from-str to-str – dkarchmer
または、酸漬けやJSONFieldの使用を見てください。 https://pypi.python.org/pypi/django-picklefieldとhttps://github.com/bradjasper/django-jsonfield –