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
相关产品推荐
相关产品推荐

