gpt4 book ai didi

mysql - 在 django 中使用什么数据库模式进行一对二对应?

转载 作者:行者123 更新时间:2023-11-29 11:14:12 24 4
gpt4 key购买 nike

我知道 OneToOneField 进行一对一对应,ForeignKey 进行一对多对应。

有没有比 ForeignKey 更有效的方法来存储一对二的对应关系?

谢谢。

最佳答案

这是一个包含两个 OneToOneField 键的示例:

from django.db import models

class Meaning(models.Model):
definition = models.TextField(null=True)

class Word(models.Model):
masculine_meaning = models.OneToOneField(Meaning, null=True, related_name='mword')
feminine_meaning = models.OneToOneField(Meaning, null=True, related_name='fword')
pronunciation = models.CharField(max_length=64, null=True, blank=True)

基于西类牙语的示例(我的意大利语是 peggiore)

meaning1 = Meaning()
meaning1.meaning = 'Hand'
meaning1.save()
meaning2 = Meaning()
meaning2.meaning = 'Lever'
meaning2.save()
word1 = Word()
word1.pronunciation = 'braccio'
word1.masculine_meaning = meaning1
word1.feminine_meaning = meaning2
word1.save()

查询手牌

qs = Meaning.objects.filter(definition='Hand').select_related('mword', 'fword')
for x in qs:
if x.mword: print x.mword.pronounciation
if x.fword: print x.fword.pronounciation

关于mysql - 在 django 中使用什么数据库模式进行一对二对应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40028484/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com