为了账号安全,请及时绑定邮箱和手机立即绑定

Django - 通过多个外键关系检索另一个模型中的字段

Django - 通过多个外键关系检索另一个模型中的字段

LEATH 2021-12-09 10:45:49
以下示例数据库存储新闻帖子和每条新闻的相关信息。我有兴趣检索与每个新闻相关的主题。问题是,它们存储在具有复杂关系的不同表中。每个新闻都newsid在表中分配了一个NewsFeed:class NewsFeed(models.Model):      newsid= models.OneToOneField('NewsSub',                    on_delete=models.CASCADE, db_column='newsid',                    primary_key=True)      def __str__(self):        return str(self.newsid)newsid类中的字段NewsFeed和模型之间定义了一对一的关系NewsSub:class NewsSub(models.Model):      newsid = models.BigIntegerField(primary_key=True)在另一个类中NewsTopic,foreignKey定义了字段newsid与模型之间的关系NewsSub:class NewsTopic(models.Model):      newsid = models.ForeignKey(NewsSub, on_delete=models.DO_NOTHING,              db_column='newsid')      topicid = models.ForeignKey(NewsLabel, on_delete=models.DO_NOTHING,              db_column='topicid', related_name = 'topic')在NewsTopicdb表中,每一个newsid可能对应多个topicid。最后,topicid类的字段NewsTopic与模型相关NewsLabel:class NewsLabel(models.Model):      topicid = models.BigIntegerField(primary_key=True)      topiclabel = models.CharField(max_length=100)      def __str__(self):        return self.topiclabel在NewsLabeldb 表中,每个toicid对应一个唯一的topiclabel.我的目标是获取topiclabel与每个相关联的(一个或多个)NewsFeed对象,通过查询newsid。假设result代表一个这样的对象,我想知道是否可以做类似的事情result.newsid.topicid.topiclabel?感谢和抱歉的长描述!!
查看完整描述

2 回答

?
元芳怎么了

TA贡献1798条经验 获得超7个赞

尝试这个


news_id = 1234567890

news_sub_instance = NewsSub.objects.get(newsid=news_id)


topic_labels = news_sub_instance.newstopic_set.values_list('topicid__topiclabel', flat=True)



查看完整回答
反对 回复 2021-12-09
?
哔哔one

TA贡献1854条经验 获得超8个赞

您可以使用prefech_related来获取相关对象的值,请查看https://docs.djangoproject.com/en/2.1/ref/models/querysets/#prefetch-related


查看完整回答
反对 回复 2021-12-09
  • 2 回答
  • 0 关注
  • 267 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信