Django模型设计多对一?
我试图用Django创建两个模型,“段落”和“句子”。我似乎仍然不明白多对一函数是如何工作的。如果我想有一个段落包含多个句子;我是否只需在句子模型中添加一个外键(段落)?这样,我可以在段落模型中存储多个句子。 谢谢你在我学习Django的过程中给予我的启发Django模型设计多对一?,django,django-models,foreign-keys,one-to-many,many-to-one,Django,Django Models,Foreign Keys,One To Many,Many To One,我试图用Django创建两个模型,“段落”和“句子”。我似乎仍然不明白多对一函数是如何工作的。如果我想有一个段落包含多个句子;我是否只需在句子模型中添加一个外键(段落)?这样,我可以在段落模型中存储多个句子。 谢谢你在我学习Django的过程中给予我的启发 class Sentence(models.Model): text = models.TextField(blank=True) order_number = models.IntegerField(
class Sentence(models.Model):
text = models.TextField(blank=True)
order_number = models.IntegerField()
def __str__(self):
return self.text
class Paragraph(models.Model):
text = models.TextField(blank=True)
order_number = models.IntegerField()
sentences = models.ForeignKey(Sentence, on_delete=models.CASCADE)
def __str__(self):
return self.text
ForeignKey
是一种多对一关系。这意味着定义模型的多个项可以链接到目标模型的同一项
因此,段落
因此是“父”模型,句子
是“子”模型:
然后,您可以使用以下工具查询p1
的所有相关句子:
p1.sentences.all()
p1.句子.all()
请出示您的模型是的,您走对了。一个段落可以有许多句子,但一个句子只能有一个段落。因此,这个句子的段落有一个外键。您可以通过执行Para.statement\u set.all()
来检索段落的句子,其中Para
是段落对象。
p1 = Paragraph.objects.create(text='Act 3, Scene 1', order_number=0)
s1 = Sentence.objects.create(
text='To be, or not to be, that is the question',
paragraph=p1,
order_number=0
)
s2 = Sentence.objects.create(
text='Whether 'tis nobler in the mind to suffer',
paragraph=p1,
order_number=1
)
p1.sentences.all()