首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在django中使用哪种数据库模式来处理一对二通信?

在django中使用哪种数据库模式来处理一对二通信?
EN

Stack Overflow用户
提问于 2016-10-14 02:34:44
回答 1查看 72关注 0票数 0

我知道OneToOneField进行一对一通信,而ForeignKey进行一对多通信。

有没有比ForeignKey更有效的存储一对二通信的方法?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2016-10-14 12:51:02

下面是一个包含两个OneToOneField密钥的示例:

代码语言:javascript
运行
复制
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)

代码语言:javascript
运行
复制
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()

手动查询

代码语言:javascript
运行
复制
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
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40028484

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档