You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何从Django的Offre模型访问关联Recruteur模型的名称

如何从Offre模型通过外键访问关联Recruteur的name属性?

很简单,我来给你一步步说清楚怎么操作~

1. 基于你现有模型的直接访问方式

你当前的Offre模型里外键字段叫idRecruteur,只要拿到一个Offre的实例,直接通过这个外键字段就能访问关联的Recruteur对象,再取它的name属性就行。

Python代码中使用:

# 先获取一个Offre实例,比如取数据库中第一个
my_offre = Offre.objects.first()
# 直接访问关联Recruteur的name属性
recruteur_name = my_offre.idRecruteur.name
print(recruteur_name)  # 输出对应的招聘者名称

Django模板中使用:

如果是在模板里渲染数据,写法更简洁:

{{ my_offre.idRecruteur.name }}

2. 推荐优化外键字段命名(更符合Django规范)

其实Django里外键字段不需要加id前缀,框架会自动在数据库中生成类似idrecruteur_id的字段来存储关联主键。建议你把Offre里的外键字段改成更直观的名字,比如recruteur,这样代码可读性会好很多:

@python_2_unicode_compatible
class Offre(models.Model):
    title = models.CharField(max_length=100, default=0)
    # 将idRecruteur改为recruteur
    recruteur = models.ForeignKey(Recruteur, on_delete=models.CASCADE)
    def __str__(self):
        return "Offre: {}".format(self.title)

改完之后,访问方式就变成更语义化的写法:

my_offre.recruteur.name  # Python代码中访问
{{ my_offre.recruteur.name }}  # 模板中访问

3. 额外提下反向访问(从Recruteur找关联的Offre)

如果之后需要从Recruteur实例找它发布的所有Offre,Django默认会给Recruteur生成一个offre_set属性:

my_recruteur = Recruteur.objects.first()
# 获取该招聘者发布的所有职位
all_offres = my_recruteur.offre_set.all()

你也可以在外键定义时通过related_name自定义这个反向关联的名字,比如:

recruteur = models.ForeignKey(Recruteur, on_delete=models.CASCADE, related_name='offres')

之后就可以用my_recruteur.offres.all()来访问,更符合语义习惯。

内容的提问来源于stack exchange,提问作者ccr0x

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:03:09