一对多关系Django

问题描述 投票:1回答:1

我正在使用Django编写字典。如果需要,我希望一个单词具有多个定义。这将是一对多的关系,但是Django似乎没有OneToManyField

这是我的代码的片段:

class Definition(models.Model):
    definition = models.CharField(max_length=64)

class Word(models.Model):
    word = models.CharField(max_length=64, unique=True)
    definitions = models.ForeignKey(Definition, on_delete=models.CASCADE, related_name="word")

我想做word.definitions,并找回该词的所有定义。同样,删除单词应删除该单词的所有定义。最后,a_definition.word应该给我与该定义相关的词。

python django one-to-many
1个回答
3
投票

您必须在ForeignKey类中使用DefinitionDefinitionWord有关系:

from django.db import models

class Definition(models.Model):
    definition = models.CharField(max_length=64)
    word = models.ForeignKey(Word, on_delete=models.CASCADE)

class Word(models.Model):
    word = models.CharField(max_length=64, unique=True)

您可以这样查询:

from .models import Word, Definition

word = Word.objects.get(word = 'test')   #get Word object
definitions = Definition.objects.filter(word = word)   #get all Definition objects related to word object above

for definition in definitions:   #print all definitions related to word
    print('%s -> %s' % (word.word, definition.definition))
© www.soinside.com 2019 - 2024. All rights reserved.