如何在 Django html 页面中显示外键数据? [英] How to display Foreignkey Data in Django html page?

查看:73
本文介绍了如何在 Django html 页面中显示外键数据?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想从相关外键模型中获取数据,但无法从相关模型中获取数据,请告诉我该怎么做.我想显示 Model2 表中的 name 值..

I want to get data from related foreign-key models, but I am unable to get data from the related model, Please let me know how I can do it. I want to display name value from Model2 table..

这是我的 models.py 文件...

here is my models.py file...

class Customer(models.Model):
    cus_name=models.Charfield(blank=True)

class Model1(models.Model):
    namefield=models.Charfield(blank=True)

class Model2(models.Model):
    name=models.CharField(default=None)
    model1=models.Foreignkey(Model1, related_name='model_one', on_delete=models.CASCADE)
   customer=models.Foreignkey(Customer, related_name='customer_data', on_delete=models.CASCADE)

这是我的 views.py 文件...

here is my views.py file...

def display_data(request, id):
     test_display=Model1.objects.filter(pk=id).first()
     return render(request, 'page.html', {'test_display':test_display})

这是我的 test.html 文件,我在其中显示 Model2 表中的 name

here is my test.html file where i am displaying name from Model2 table

<p>{{test_display.model_one.name}}</p>

推荐答案

首先,使用 get() 代替 filter(...).first()get_object_or_404()方法:

First, instead of filter(...).first(), use get() or get_object_or_404() method:

 from django.shortcuts import get_object_or_404

 def display_data(request, id):
     test_display=get_object_or_404(Model1.objects.prefetch_related('model_one'), pk)  
     # or Model1.objects.prefetch_related('model_one').get(pk=pk)
     return render(request, 'page.html', {'test_display':test_display})

并且在模板中使用反向关系查询Model1 实例:

And in the template, use reverse relation to query Model1 instances:

{% for object in test_display.model_one.all %}
    {{ object.name }}
{% endfor %}

由于外键的存在,Model1 和 Model2 之间是多对一的关系,所以反向查询 Model2 实例会得到多个 Model1 对象.如果您只想为 Model2 存储一个对象,请考虑使用 OneToOne 关系.

As the relation between Model1 and Model2 is many to one due to ForeignKey, you will get multiple Model1 objects from reverse querying Model2 instance. If you want only one object to stored for Model2, then consider using OneToOne relation.

这篇关于如何在 Django html 页面中显示外键数据?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆