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

Django模板中无法渲染ForeignKey关联模型字段问题求助

Django外键关联字段模板不显示问题解决

你的问题核心是模板里用错了外键字段名,直接修改模板代码就能解决:

错误原因

在models.py的Candidate模型中,关联Position的外键字段名叫positionc,但你在模板里写的是position,Django找不到这个字段,所以无法渲染出对应内容。

修正方案

把模板candidate_list.html里的代码改成:

<div class="card-header"> {{ candidate_list.positionc.positions }} </div>

可选优化(按需选择)

如果觉得positionc这个字段名不够直观,也可以修改models.py里的外键字段名,改成更易懂的position:

# models.py 中 Candidate 模型的外键字段修改
position = models.ForeignKey(Position, on_delete = models.CASCADE, related_name ='candidateobj')

修改后需要执行数据库迁移命令:

python manage.py makemigrations
python manage.py migrate

这样模板里原来的{{ candidate_list.position.positions }}写法就可以正常使用了。

你的代码参考

models.py

class Position(models.Model):
    positions = models.CharField(max_length = 200)
    pub_date = models.DateTimeField('date published')

    def __str__(self):
        return self.positions

class Candidate(models.Model):
    first_name = models.CharField(max_length=30)
    last_name = models.CharField(max_length=30)
    email = models.EmailField('User Email')
    mobile_no = models.CharField(max_length=10)
    candidate_image = models.ImageField(null=False, blank=False, upload_to="candidate_images/")
    description = models.TextField(null=True, blank=True)
    votes = models.IntegerField(default = 0)
    positionc = models.ForeignKey(Position, on_delete = models.CASCADE, related_name ='candidateobj')

    def __str__(self):
        return self.first_name

views.py

def candidate_list(request):
    candidate_list = Candidate.objects.get(pk=1)
    return render(request, 'candidate_list.html', {
        "candidate_list": candidate_list,
    })

原错误模板代码(candidate_list.html)

<div class="card-header"> {{ candidate_list.position.positions }} </div>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 11:47:07