Django模型设计多对一?
Django Model Design many-to-one?
我正在尝试在 Django 中创建两个模型,'Paragraph' 和 'Sentences'。我似乎仍然不明白多对一功能是如何工作的。如果我想要一个包含多个句子的段落;我只是简单地添加一个 ForeignKey(Paragraph) 到 Sentences 模型中吗?这样我就可以在段落模型中存储多个句子。
感谢您在我尝试学习 Django 时提供的任何见解。
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
是一个多对一关系。这意味着您定义模型的 多个 项目可以 link 到 target 模型的相同项目。
因此 Paragraph
是“父”模型,Sentence
是“子”模型:
class Paragraph(models.Model):
text = models.TextField(blank=True)
order_number = models.IntegerField()
def __str__(self):
return self.text
class Sentence(models.Model):
text = models.TextField(blank=True)
order_number = models.IntegerField()
<b>paragraph</b> = models.ForeignKey(
Paragraph,
on_delete=models.CASCADE,
<b>related_name='sentences'</b>
)
def __str__(self):
return self.text
因此,您可以将 Paragraph
和多个句子全部 link 到同一段落:
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',
<b>paragraph=p1</b>,
order_number=0
)
s2 = Sentence.objects.create(
text='Whether 'tis nobler in the mind to suffer',
<b>paragraph=p1</b>,
order_number=1
)
然后您可以查询 p1
的所有 相关 句子:
p1<b>.sentences</b>.all()
我正在尝试在 Django 中创建两个模型,'Paragraph' 和 'Sentences'。我似乎仍然不明白多对一功能是如何工作的。如果我想要一个包含多个句子的段落;我只是简单地添加一个 ForeignKey(Paragraph) 到 Sentences 模型中吗?这样我就可以在段落模型中存储多个句子。 感谢您在我尝试学习 Django 时提供的任何见解。
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
是一个多对一关系。这意味着您定义模型的 多个 项目可以 link 到 target 模型的相同项目。
因此 Paragraph
是“父”模型,Sentence
是“子”模型:
class Paragraph(models.Model):
text = models.TextField(blank=True)
order_number = models.IntegerField()
def __str__(self):
return self.text
class Sentence(models.Model):
text = models.TextField(blank=True)
order_number = models.IntegerField()
<b>paragraph</b> = models.ForeignKey(
Paragraph,
on_delete=models.CASCADE,
<b>related_name='sentences'</b>
)
def __str__(self):
return self.text
因此,您可以将 Paragraph
和多个句子全部 link 到同一段落:
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',
<b>paragraph=p1</b>,
order_number=0
)
s2 = Sentence.objects.create(
text='Whether 'tis nobler in the mind to suffer',
<b>paragraph=p1</b>,
order_number=1
)
然后您可以查询 p1
的所有 相关 句子:
p1<b>.sentences</b>.all()