试图建立单词和翻译的数据库模型?

时间:2015-10-15 14:31:38

标签: django database

所以现在我的模型看起来像这样......

class Language()
    name= Char()

class Word
    id = pk()
    language = ForeignKey(language)
    name = Char()

class Translation()
    original = FoeignKey(word)
    L2 = ForiegnKey(language)
    definition = Text()
    translation = Char()

我遇到的问题是说我有两种语言(英语/西班牙语)和两个单词(el / la,the)。使用我当前的模型,我必须为这两个单词设置两个翻译对象。

class Language()
    name= Char()

class Word
    id = pk()
    language = ForeignKey(language)
    name = Char()

class Translation()
    language1 = FoeignKey(word)
    language2 = ForiegnKey(word)
    definition_language1 = Text()
    definition_language2 = Text()

虽然我尝试做选项2,但我认为不会让我直接将ForeignKeys改为单词class。

我想我已经把自己想到了一个角落,我无法决定是否完全有必要做选项2。它甚至可能吗?

2 个答案:

答案 0 :(得分:1)

你有更多的结构,你有更多的Word表,一个语言表,然后你的转换表是一个连接Word表与自身的直通表。然后,您可以将所有其他信息放在直通表中,并将其作为两个Word对象之间的连接进行查询

如果您不知道直通表是什么,可以在此处找到有关如何使用该文档的文档:https://docs.djangoproject.com/en/1.8/topics/db/models/#extra-fields-on-many-to-many-relationships

答案 1 :(得分:0)

为什么不将第二个示例与related_name一起使用?

class Translation()
        language1 = ForeignKey(word, related_name = 'masculine')
        language2 = ForeignKey(word, related_name = 'feminine')