决定如何在 Django 中对这些数据建模

Deciding how to model this data in django

想象一下,它是用来将词汇翻译成另一种语言的。我只处理有限数量的单词 (~2000)。

Language1 和 Language2(将有不同的 ~2000 个单词),每个可能有多个与另一种语言等效的单词,这些单词可能在也可能不在另一种语言的 ~2000 个单词列表中。

最初我很喜欢使用多对多关系,但我无法完全看透迷雾,看看哪种方式最有效。

我的另一个想法是为每个单词制作一个 json 转储。像....

{1: {'Lang1': [word1, word2], 'Lang2': [word1, word2]}}

但我不确定这样管理所有事情是否太聪明了,从管理部分进行操作会很麻烦(因为我想我会编辑一长串 json 对象)并且它没有充分利用。

也许还有其他我没有想到的方法?

根据我的情况,您将如何定义它?

class Language(models.Model):
   name = models.CharField(max_length=100)

class Word(models.Model):
   name = models.CharField(max_length=100)
   language = models.ForeignKey(Language, related_name='language_words')
   #...

class Translation(models.Model):
   word = models.ForeignKey(Word, related_name='word_translations')
   translation = models.CharField(max_length=100)
   from_language = models.ForeignKey(Language, related_name='language_translations')
   in_language = models.CharField(max_length=100)


# stage performances
english_language = Language(name='english')
english_language.save()

word = english_language.language_words.create(name='Flower')
german_translation = word.word_translations.create(translation='Blumen',
                                                   from_language=english_language,
                                                   in_language='German')



word # 'Flower'
german_translation # 'Blumen' 

可能还不是最优的,我现在正在火车上,但这可能是一个充满希望的开始的好方法。

然后如果您将这些模型注册到管理员中,您可以轻松管理 (add/delete) 翻译..